我试图设置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
值。我该怎么办?
ANSWER
得到Klaus Byskov Pedersen
的答案我认为它有效......首先,我使用SelectedValue
代替SelectedItem
...然后,我在构造函数{{}中使用Sklady
1}}并且最后更改了行:
prijemWindow.viewModel.Sklady = new Sklady();prijemWindow.viewModel.Sklady = new Sklady();
非常感谢!
答案 0 :(得分:2)
使用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
,所以请尝试更改这两个语句的顺序。