[英]The combobox SelectedItem doesn't get updated in WPF
我將組合框綁定到此處的列表, SelectedItem
也綁定到后面代碼中的CurrentCode
屬性。 現在,所有事物都可以很好地顯示,並且所選項目已按預期設置。 但是,讓我通過單擊一個按鈕來更改CurrentCode
的值。 為什么組合框沒有更新?
<ComboBox ItemsSource="{Binding Path=Codes}"
SelectedItem="{Binding CurrentCode,
RelativeSource={RelativeSource FindAncestor, AncestorType=Window},
Mode=OneTime}"/>
public partial class SettingsWindow
{
public List<string> Codes { get; set; }
public string CurrentCode
{
get
{
return Building.Code;
}
}
public SettingsWindow()
{
InitializeComponent();
Codes = new List<string> {"ACI Code", "BS Code"};
DataContext = this;
}
private void OK_OnClick(object sender, RoutedEventArgs e)
{
Building.Code = "BS Code;
}
}
您應該實現INotifyPropertyChanged並在更改屬性支持字段http://msdn.microsoft.com/zh-cn/library/ms743695%28v=vs.110%29.aspx時引發PropertyChanged事件
如果您在后面的代碼中,則可以給ComboBox命名並直接訪問它。
如果要使其與該屬性一起使用(最好以MVVM方式將其移至其自己的類中,並將Window的DataContext設置為該“視圖模型”類),則需要實現INotifyPropertyChanged
:
public partial class SettingsWindow : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
private void OK_OnClick(object sender, RoutedEventArgs e)
{
Building.Code = "BS Code;
OnPropertyChanged("CurrentCode");
}
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.