[英]Default selected value in ComboBox
Im trying to set default value of ComboBox
. 我试图设置
ComboBox
默认值。 I'm using binding in layout and I'm not sure how bind it right. 我在布局中使用绑定,但不确定如何正确绑定。 Here is my
viewModel
: 这是我的
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");
}
}
}
How I am set data to viewModel
: 我如何将数据设置为
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;
}
My viewModel
use this class to get values: 我的
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; }
}
}
And this is current xaml
code: 这是当前的
xaml
代码:
<ComboBox Name="comboBoxSklad" Loaded="comboBoxSklad_Loaded" ItemsSource="{Binding Sklady.sklady}" DisplayMemberPath="CODE"
SelectedValuePath="ID" SelectedItem="{Binding Sklady.skladID}"/>
Data are binded into ComboBox
correctly and I can see data from sklady
List
. 数据正确绑定到
ComboBox
,我可以从sklady
List
看到数据。 But I would like to set the ComboBox
default value to skladID
value. 但是我想将
ComboBox
默认值设置为skladID
值。 How can I do it? 我该怎么做?
ANSWER 回答
With answer from Klaus Byskov Pedersen
I get it work... First, I use SelectedValue
instead of SelectedItem
... Then, I ininialize Sklady
in constructor prijemWindow.viewModel.Sklady = new Sklady();prijemWindow.viewModel.Sklady = new Sklady();
从回答
Klaus Byskov Pedersen
我得到它的工作。首先,我用SelectedValue
代替SelectedItem
......然后,我ininialize Sklady
在构造函数中prijemWindow.viewModel.Sklady = new Sklady();prijemWindow.viewModel.Sklady = new Sklady();
and at the end, changed lines : 最后,更改了行:
sklady.skladID = prijemWindow.viewModel.Radky.radky[index].SKLAD;
prijemWindow.viewModel.Sklady = sklady;
Thanks a lot! 非常感谢!
Use SelectedValue
instead of SelectedItem
. 使用
SelectedValue
而不是SelectedItem
。
<ComboBox Name="comboBoxSklad" Loaded="comboBoxSklad_Loaded" ItemsSource="{Binding Sklady.sklady}" DisplayMemberPath="CODE"
SelectedValuePath="ID" SelectedValue="{Binding Sklady.skladID}"/>
When using SelectedItem
the bound item would be of type Sklady
, not string
. 使用
SelectedItem
,绑定项的类型Sklady
,而不是string
。
EDIT ` 编辑 `
prijemWindow.viewModel.Sklady = sklady;
prijemWindow.viewModel.Sklady.skladID = prijemWindow.viewModel.Radky.radky[index].SKLAD;
You have a NotifyPropertyChanged
when you set viewModel.Sklady
but at the time this is fired, you have not yet set the skladID
so try changing the order of those two statements. 你有
NotifyPropertyChanged
当您设置viewModel.Sklady
但在这个被解雇的时候,你还没有设置skladID
所以尝试改变这两个语句的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.