WPF 開發程序目前最好的用的設計模式為MVVM模式,實現了前后端的分離,前端頁面的更改不需要后台代碼邏輯發生變化,同理,后台邏輯發生變化時基本上也不需要修改前台的頁面布局等信息。
由於某些原因,可能導致項目不是完全按照MVVM模式進行設計了,這是要在想要使用WPF中的Binding
功能,可能就需要在后台代碼邏輯中進行實現。
小編在開發過程中由於項目不是嚴格按照MVVM模式進行設計的,因此Binding
功能的實現就要使用編寫代碼的方式進行實現了。
問題:要在后台代碼中實現ComboBox
的選擇項發生變化時,在類中定義的一個用於記錄SelectedItem
的屬性要跟着變化。這個就只能在后台代碼邏輯中實現
解決:
namespace CodeBehindBinding
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private ObservableCollection<string> _ItemsSources = new ObservableCollection<string>()
{
"A","B","C","D","E"
};
public string SelectedStringItem { get; set; }
public MainWindow()
{
InitializeComponent();
CodeBindingComboBox.ItemsSource = _ItemsSources;
//Binding 工作
var binding = new Binding()
{
Path = new PropertyPath(nameof(SelectedStringItem)),//要綁定的屬性,必須是public類型
Source=this//定義屬性所在的類
};
//設置綁定
CodeBindingComboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
}
/// <summary>
/// 驗證綁定是否成功
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CodeBindingComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var s = SelectedStringItem;
}
}
}
這樣,就實現了在后台代碼中綁定相關的工作了。