将组合框绑定到具有“静态”内容的List,并使用MVVM在WPF上显示来自数据库的内容

时间:2014-05-18 15:35:55

标签: c# wpf mvvm combobox

我有一个组合框,我想在你点击它时显示性别"女性"或者"男性" ,同时我想从我的数据库中读取哪些"性别"有选定的员工。所以,通常我想阅读并在我的组合框中显示" sex"从我的数据库,但当你点击它我还想显示你将有两个不同的选项("女"或"男")。问题是现在我知道如何绑定到一个组合框,所以我可以从Observable集合中显示它的内容,但我不知道如何我可以绑定它的属性以及我如何也可以显示相同的时间是一个人可以选择的两种不同的选择。

提前致谢!

1 个答案:

答案 0 :(得分:0)

保持 ObservableCollection 绑定。听起来好像它工作正常,它负责提供你想要在ComboBox的下拉列表中公开的所有选项。

听起来您希望默认显示从您的数据库中获取的性别属性。

据推测,您的DataContext上会有一些属性正在实施 INotifyPropertyChanged

private string _sex;

public string Sex
{
    get { return _sex; }
    set
    {
        if (_sex != value)
        {
            _sex = value;

            OnPropertyChanged("Sex");
        }
    }
}

private void WhateverMethodYouHaveGettingDataFromDB()
{
    //... do whatever it needs ...

    Sex = // get sex from database...
}

public event PropertyChangedEventHandler PropertyChanged;

private void OnPropertyChanged(string propertyName)
{
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

现在您有一个可绑定属性,表示您从数据库中获取的性别

要将其推送到ComboBox中的默认公开值,只需将其绑定到 SelectedValue 属性即可。

<ComboBox ItemsSource="{Binding --your observable collection--}"
          SelectedValue="{Binding Sex}"/>