數據綁定是 WPF 中非常重要的特性,它建立了 UI 元素與數據源之間的連接,使數據能夠在兩者之間自動同步。

綁定的兩種常見情況
  1. 綁定到元素上
    將一個 UI 元素的屬性綁定到另一個 UI 元素的屬性上 <!-- 示例:將TextBox的Text屬性綁定到Slider的Value屬性 --> <Slider x:Name="slider" Minimum="0" Maximum="100" Value="50"/> <TextBox Text="{Binding ElementName=slider, Path=Value, StringFormat=F0}"/>
  2. 綁定到非元素上
    將 UI 元素綁定到數據對象(如 ViewModel、業務對象等) <!-- 示例:綁定到數據對象的屬性 --> <TextBox Text="{Binding UserName}"/> 後台需要設置 DataContext: this.DataContext = new UserViewModel(); // UserViewModel包含UserName屬性
五種綁定模式
  1. Default(默認模式)
  • 根據目標屬性自動確定模式
  • 多數屬性為 OneWay,可編輯控件(如 TextBox 的 Text)默認為 TwoWay

<TextBox Text="{Binding UserName}"/> <!-- 默認為TwoWay --> <TextBlock Text="{Binding UserName}"/> <!-- 默認為OneWay -->

  1. OneWay(單向綁定)
  • 數據源變化時更新目標,但目標變化不影響數據源

<TextBlock Text="{Binding UserName, Mode=OneWay}"/>

  1. TwoWay(雙向綁定)
  • 數據源變化更新目標,目標變化也更新數據源

<TextBox Text="{Binding UserName, Mode=TwoWay}"/>

  1. OneTime(一次性綁定)
  • 只在初始時將數據源的值更新到目標,之後不再同步

<TextBlock Text="{Binding InitialValue, Mode=OneTime}"/>

  1. OneWayToSource(單向到源)
  • 目標變化時更新數據源,但數據源變化不影響目標

<TextBox Text="{Binding FilterText, Mode=OneWayToSource}"/>

綁定的補充屬性
  • UpdateSourceTrigger:指定何時更新數據源 <!-- 失去焦點時更新數據源 --> <TextBox Text="{Binding UserName, UpdateSourceTrigger=LostFocus}"/>
  • StringFormat:格式化綁定的字符串 <TextBlock Text="{Binding Price, StringFormat=C}"/> <!-- 貨幣格式 -->
  • FallbackValue:綁定失敗時顯示的值 <TextBlock Text="{Binding UnknownProperty, FallbackValue='N/A'}"/>

通過合理使用不同的綁定模式,可以構建響應式強、維護性好的 WPF 應用程序,特別是結合 MVVM 模式時能發揮最大威力。