我正在寻找在数据可用时选择第一项的方法。但如果源中没有数据,则不要选择。怎么做 ?我是WPF的新手。
<ComboBox Grid.Row="5" Grid.Column="1"
IsEditable="False"
ItemsSource="{Binding Source={x:Static l:DirectXResolution.Resolutions}}"
ToolTip="Resolutions">
<ComboBox.Resources>
<l:ResolutionConverter x:Key="resolutionConverter"/>
</ComboBox.Resources>
<ComboBox.Text>
<MultiBinding Converter="{StaticResource resolutionConverter}">
<Binding Path="GameWidth" Mode="OneWayToSource"/>
<Binding Path="GameHeight" Mode="OneWayToSource"/>
</MultiBinding>
</ComboBox.Text>
</ComboBox>
答案 0 :(得分:22)
最简单的方法是使用SelectedIndex。请检查下面的代码。
<ComboBox Grid.Row="5" Grid.Column="1"
IsEditable="False"
ItemsSource="{Binding Source={x:Static l:DirectXResolution.Resolutions}}"
ToolTip="Resolutions"
SelectedIndex="0">
....
答案 1 :(得分:1)
DirectXResolution.Resolutions
必须为ObservableCollection<T>
,否则当数据可用时,您的ComboBox
将不会更新。您可以使用CollectionChanged
ObservableCollection<T>
事件来选择第一项。
如果DirectXResolution.Resolutions
不是ObservableCollection
,请为此集合创建一个包装并继承INotifyCollectionChanged
答案 2 :(得分:0)
以下是如何在代码中执行此操作:
Items.CollectionChanged += (sender, e) =>
{
if (!Items.Contains(Selected))
{
Selected = Items.FirstOrDefault();
}
};
Items
是可以更新的ObservableCollection
。 Selected
是所选项目的双向属性。此代码应放在视图模型的构造函数中。