簡體   English   中英

ComboBox中的默認選定值

[英]Default selected value in ComboBox

我試圖設置ComboBox默認值。 我在布局中使用綁定,但不確定如何正確綁定。 這是我的viewModel

public class ViewModel : INotifyPropertyChanged
{
    private Sklady sklady = null;

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    public Sklady Sklady
    {
        get
        {
            return this.sklady;
        }
        set
        {
            this.sklady = value;
            NotifyPropertyChanged("Sklady");
        }
    }
}

我如何將數據設置為viewModel

private void comboBoxSklad_Loaded(object sender, RoutedEventArgs e)
{
    //get some data
    prijemWindow.viewModel.Sklady = sklady;
    prijemWindow.viewModel.Sklady.skladID = prijemWindow.viewModel.Radky.radky[index].SKLAD;
}

我的viewModel使用此類獲取值:

[DataContract]
public class Sklady
{
    [DataMember]
    public List<Sklad> sklady { get; set; }
    [DataMember]
    public String skladID { get; set; }

    public class Sklad
    {
        public string ID { get; set; }
        public string NAME { get; set; }
        public string CODE { get; set; }
    }
}

這是當前的xaml代碼:

<ComboBox Name="comboBoxSklad" Loaded="comboBoxSklad_Loaded" ItemsSource="{Binding Sklady.sklady}" DisplayMemberPath="CODE"
        SelectedValuePath="ID" SelectedItem="{Binding Sklady.skladID}"/>

數據正確綁定到ComboBox ,我可以從sklady List看到數據。 但是我想將ComboBox默認值設置為skladID值。 我該怎么做?

回答

從回答Klaus Byskov Pedersen我得到它的工作。首先,我用SelectedValue代替SelectedItem ......然后,我ininialize Sklady在構造函數中prijemWindow.viewModel.Sklady = new Sklady();prijemWindow.viewModel.Sklady = new Sklady(); 最后,更改了行:

sklady.skladID = prijemWindow.viewModel.Radky.radky[index].SKLAD;
prijemWindow.viewModel.Sklady = sklady;

非常感謝!

使用SelectedValue而不是SelectedItem

<ComboBox Name="comboBoxSklad" Loaded="comboBoxSklad_Loaded" ItemsSource="{Binding Sklady.sklady}" DisplayMemberPath="CODE"
    SelectedValuePath="ID" SelectedValue="{Binding Sklady.skladID}"/>

使用SelectedItem ,綁定項的類型Sklady ,而不是string

編輯 `

prijemWindow.viewModel.Sklady = sklady;
prijemWindow.viewModel.Sklady.skladID = prijemWindow.viewModel.Radky.radky[index].SKLAD;

你有NotifyPropertyChanged當您設置viewModel.Sklady但在這個被解雇的時候,你還沒有設置skladID所以嘗試改變這兩個語句的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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