2014-12-23 1 views
1

Что я хочу сделать, если в поле со списком есть только 1 item, тогда он получает preselected. Я попытался использовать DataTriggers, но он не работает для 'SelectedIndex'. Но когда я установил 'IsEnabled' свойство false его работа и отключить выпадающий список.SelectedIndex DataTrigger не работает в Combobox

Ниже мой код:

<ComboBox Name="WarehouseCombo" 
     ItemsSource="{Binding Path=WarehouseList}" 
     SelectedValue="{Binding Warehouse,Mode=TwoWay}" 
     Text="{Binding Path=TxtWarehouse,Mode=TwoWay}"> 
     <ComboBox.Style> 
       <Style TargetType="{x:Type ComboBox}"> 
        <Style.Triggers> 
         <DataTrigger 
           Binding="{Binding Path=Items.Count, ElementName=WarehouseCombo}" Value="1"> 
            <Setter Property="SelectedIndex" Value="0" /> 
          </DataTrigger> 
        </Style.Triggers> 
       </Style> 
     </ComboBox.Style> 
</ComboBox> 

Пожалуйста, помогите мне, почему это происходит в случае «SelectedIndex».

ответ

2

Не используйте свойство SelectedIndex. Вместо этого используйте свойство SelectedItem. Один из способов удовлетворить ваши требования - объявить базовый класс для сбора данных. Попробуйте что-то вроде этого:

public WarehouseList : ObservableCollection<WarehouseItems> 
{ 
    private T currentItem; 

    public WarehouseList() { } 

    public T CurrentItem { get; set; } // Implement INotifyPropertyChanged here 

    public new void Add(T item) 
    { 
     base.Add(item); 
     if (Count == 1) CurrentItem = item; 
    } 
} 

Теперь, если вы используете этот класс вместо стандартной коллекции, он будет автоматически установлен первый элемент, как выбран. Чтобы сделать эту работу в пользовательском интерфейсе, вам просто нужно привязать это свойство к свойству SelectedItem, как это:

<DataGrid ItemsSource="{Binding WarehouseList}" 
    SelectedItem="{Binding WarehouseList.CurrentItem}" /> 

 Смежные вопросы

  • Нет связанных вопросов^_^