Настройка ComboBox.Выбранный элемент во время привязки?

#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];