WPF學習筆記:(二)數據綁定模式與INotifyPropertyChanged接口

數據綁定模式共有四種:OneTime、OneWay、OneWayToSource和TwoWay,默認是TwoWay。通常來講,完成數據綁定要有三個要點:目標屬性是依賴屬性、綁定設置和實現了INotifyPropertyChanged接口的數據源(數據上下文)。blog

OneTime:一次性有效,以後數據源的變化不會對目標屬性有任何影響;固然,目標屬性的改變也不對數據源有影響。代碼以下接口

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox1" Text="{Binding Path=MyName, Mode=OneTime}" VerticalAlignment="Top" Width="120" />

OneWay:單向做用,數據源的改變會反映到目標屬性上;但目標屬性的改變不對數據源有影響。代碼以下:class

  <TextBox Height="23" HorizontalAlignment="Left" Margin="176,83,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="{Binding Path=MyName, Mode=OneWay}" />

OneWayToSource:單向做用,跟OneWay的方向相反,目標屬性的改變會更新到數據源上;但數據源的更新不會通知目標屬性。在這種模式下,目標屬性值初始狀態通常爲空,由於數據源的值對其不起做用。代碼以下: 後臺

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox3" Text="{Binding Path=MyName, Mode=OneWayToSource}" VerticalAlignment="Top" Width="120" />

TwoWay:雙向做用,即目標屬性的改變會更新到數據源上,數據源的更新也會通知目標屬性。這是綁定的默認方式,能夠省略。代碼以下:im

  <TextBox Height="23" HorizontalAlignment="Left" Margin="174,38,0,0" Name="textBox4" Text="{Binding Path=MyName}" VerticalAlignment="Top" Width="120" />

到此這幾種模式就介紹完了。不過,我這裏還有個有趣的問題:若是數據源沒有實現INotifyPropertyChanged接口,這幾種模式還能正常工做嗎?我作了一些嘗試,得出的結論是:數據

  一、OneTime模式根本不受影響;di

  二、若是在後臺代碼中更改了數據源,目標屬性不會獲得通知;工作

  三、若是在界面上更改目標屬性,數據源會收到更新通知。數據綁定

不實現INotifyPropertyChanged接口的數據源到底有沒有意義,以及爲什麼會出現以上的現象,我還須要深刻研究。界面

相關文章
相關標籤/搜索