#wpf
#wpf
Вопрос:
У меня есть поле со списком в DataTemplate, которое выбирается селектором шаблона ячейки в DataGrid.
Как мне установить SelectedItem равным нулю, когда ComboBox привязан к своему ItemsSource? Часто есть только один элемент, и я хочу, чтобы он отображался немедленно, вместо того, чтобы быть выбранным пользователем.
Мой столбец DataGrid выглядит следующим образом:
<DataGridTemplateColumn Header="Qty Avl">
<DataGridTemplateColumn.CellTemplateSelector>
<selectors:PartAvailableSelector StrTemplate="{StaticResource PartAvailableAtStrTemplate}">
<selectors:PartAvailableSelector.NetTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding AltLocations}"
DisplayMemberPath="Name"
SelectedItem="0"
/>
</DataTemplate>
</selectors:PartAvailableSelector.NetTemplate>
</selectors:PartAvailableSelector>
</DataGridTemplateColumn.CellTemplateSelector>
</DataGridTemplateColumn>
Мой селектор имеет свойства DataTemplate просто потому, что это проще. Я встроил шаблон NetTemplate для этого поста. Обычно у меня это есть в ресурсах моего окна.
Ответ №1:
SelectedItem
будет ли сохранен весь объект из ItemsSource
, чтобы установить элемент 0 как выбранный, который вам нужно установить SelectedIndex="0"
или в ViewModel вам нужно привязать SelectedItem="{Binding SLocation}"
к AltLocations[0]
<ComboBox ItemsSource="{Binding AltLocations}"
DisplayMemberPath="Name"
SelectedIndex="0"
/>
Или
<ComboBox ItemsSource="{Binding AltLocations}"
DisplayMemberPath="Name"
SelectedItem="{Binding SLocation}"
/>
Виртуальная машина
private Location sLocation
public Location SLocation
{
get { return sLocation; }
set
{
sLocation= value;
OnPropertyChanged(new PropertyChangedEventArgs("SLocation"));
}
}
//Ctor
SLocation=AltLocations[0];