摘要:[WPF] SetBinding 筆記
今天在 msdn 論壇看到有人發問關於 Binding string 的問題,
其實是個 WPF 控制項 SetBinding 的問題,
由於自己本身也沒摸過 WPF 因此 Google 了一下發現,
似乎不是把字串變數直接設給 Source 就好,
參考資料繫結概觀
裡面提到:若要偵測來源變更(適用於 OneWay 和 TwoWay 繫結),
來源必須實作適當的屬性變更告知機制,例如 INotifyPropertyChanged。
所以把原本的 code 參考HOW TO:使用程式碼建立繫結,改寫如下:
public partial class MainWindow : Window
{
public MyData myData = new MyData();
public class MyData : INotifyPropertyChanged
{
private string myDataProperty;
public MyData() { }
public string MyDataProperty
{
get { return myDataProperty; }
set
{
myDataProperty = value;
OnPropertyChanged("MyDataProperty");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
}
public MainWindow()
{
myData.MyDataProperty = "Frank Test";
InitializeComponent();
this.ProcessingBlock.SetBinding(TextBlock.TextProperty,
new Binding("MyDataProperty") { Source = myData });
}
private void Refresh_Click(object sender, RoutedEventArgs e)
{
myData.MyDataProperty = "Change";
}
}
就達到原本提問者的目的囉,自己實作一次筆記下來。