Comboxbox автоматически выбирает первый элемент, когда доступны данные
Я ищу способ выбора первого элемента, когда данные стали доступными. Но если в источнике нет данных, не выбирайте. Как это сделать? Я очень новичок в 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>
Ответы
Ответ 1
Самый простой способ - использовать SelectedIndex. Пожалуйста, проверьте код ниже.
<ComboBox Grid.Row="5" Grid.Column="1"
IsEditable="False"
ItemsSource="{Binding Source={x:Static l:DirectXResolution.Resolutions}}"
ToolTip="Resolutions"
SelectedIndex="0">
....
Ответ 2
DirectXResolution.Resolutions
должен быть ObservableCollection<T>
, иначе ваш ComboBox
не будет обновляться, когда данные станут доступными. Вы можете использовать CollectionChanged
событие ObservableCollection<T>
, чтобы выбрать первый элемент.
Если DirectXResolution.Resolutions
не ObservableCollection
, создайте оболочку для этой коллекции и наследуйте INotifyCollectionChanged
Ответ 3
Вот как это сделать в коде:
Items.CollectionChanged += (sender, e) =>
{
if (!Items.Contains(Selected))
{
Selected = Items.FirstOrDefault();
}
};
Items
- это ObservableCollection
, который может быть обновлен. Selected
является двухсторонним свойством выбранного элемента. Этот код должен быть помещен в конструктор вашей модели представления.