我希望ComboBox具有默认选定值,在这种情况下,它将是viewmodel中的第一个项目。
<ComboBox Name="cat_choices" ItemsSource="{x:Bind ViewModel.Categories}" Width="300" VerticalAlignment="Center">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="local:Category">
<TextBlock Text="{x:Bind cat_name}"></TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
来自viewmodel:
private ObservableCollection<Category> categories = new ObservableCollection<Category>();
public ObservableCollection<Category> Categories { get { return this.categories; } }
谢谢。
答案 0 :(得分:1)
在ViewModel中创建2个新属性:
private int _SelectedIndex = 0;
public int SelectedIndex
{
get
{
return _SelectedIndex;
}
set
{
_SelectedIndex = value;
RaisePropertyChanged(nameof(SelectedIndex));
}
}
private Category _SelectedQuality = null;
public Category SelectedQuality
{
get
{
return _SelectedQuality;
}
set
{
_SelectedCategory = value;
RaisePropertyChanged(nameof(SelectedCategory ));
}
}
完成填充类别后,请设置SelectedCategory = Categories.First();
在xaml中,将ComboBox的SelectedIndex
和SelectedItem
属性绑定到ViewModel中新创建的属性,设置绑定模式=双向。
答案 1 :(得分:0)
如何在ComboBox背后的代码中的SelectedIndex
事件中设置0
到Loaded
?由于您总是希望将所选项目设置为第一项,因此这很简单。
或者
如果您希望在XAML中实现它,请在ComboBox中使用EventTrigger
Loaded
事件,并使用Setter
将属性SelectedIndex
设置为{ {1}}。