[WPF] SetBinding 筆記

  • 1328
  • 0

摘要:[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";
        }
    }

 就達到原本提問者的目的囉,自己實作一次筆記下來。