簡體   English   中英

組合框SelectedItem在WPF中未更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM