当数据可用时,组合框自动选择第一项
本文关键字:选择 一项 数据 组合 | 更新日期: 2023-09-27 18:10:09
我正在寻找选择数据可用时的第一项的方法。但如果源中没有数据,则不选择。怎么做呢?我对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>
最简单的方法是使用SelectedIndex。请检查下面的代码
<ComboBox Grid.Row="5" Grid.Column="1"
IsEditable="False"
ItemsSource="{Binding Source={x:Static l:DirectXResolution.Resolutions}}"
ToolTip="Resolutions"
SelectedIndex="0">
....
DirectXResolution.Resolutions
必须是ObservableCollection<T>
,否则当数据可用时,您的ComboBox
将不会更新。您可以使用ObservableCollection<T>
的CollectionChanged
事件来选择第一项。
如果DirectXResolution.Resolutions
不是ObservableCollection
,为这个集合创建一个包装器并继承INotifyCollectionChanged
在代码中是这样做的:
Items.CollectionChanged += (sender, e) =>
{
if (!Items.Contains(Selected))
{
Selected = Items.FirstOrDefault();
}
};
Items
是可能更新的ObservableCollection
。Selected
是所选项的双向属性。这段代码应该放在视图模型的构造函数中。