我最近才開始學習,所以這是一個新手問題。也許有人可以幫助我解決我必須做的不同才能讓我的代碼作業。
簡而言之:我有一個繼承自 INotifyPropertyChanged 的??類(我試圖根據 MSDN 實作)。當我按下一個按鈕時,我想更改這個類中的一個變數,而該變數又應該引發一個 PropertyChanged 事件。當引發事件時,應該執行一些代碼。
我的 ValueChanged 類:
public class ValueChange : INotifyPropertyChanged
{
public ValueChange()
{
_size = 1;
}
private int _size;
public int Size
{
get
{
return _size;
}
set
{
_size = value;
OnPropertyRaised("Size");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyRaised([CallerMemberName] string name = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
我的事件監聽器:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ValueChange test = new ValueChange();
test.Size = 10;
}
private void PropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case "Size":
// txtbox is just some textbox in my UI
txtbox.Text = "some text";
// This is merely a placeholder as I′d like to be able to execute any code in here
break;
}
}
}
uj5u.com熱心網友回復:
代碼有幾個問題。
ValueChange每次單擊時,您都在創建該類的新實體。- 您沒有訂閱
PropertyChanged事件。
雖然這將修復您的代碼,但您在PropertyChanged這里使用而不是直接在Button_Click事件處理程式中執行您的代碼有什么原因嗎?PropertyChanged通常在系結時使用,很少像你這里做的那樣直接使用。
public partial class MainWindow : Window
{
ValueChange test = new ValueChange();
public MainWindow()
{
test.PropertyChanged = PropertyChanged;
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
test.Size = 10;
}
private void PropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case "Size":
// txtbox is just some textbox in my UI
txtbox.Text = "some text";
// This is merely a placeholder as I′d like to be able to execute any code in here
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344989.html
