我想要做的是,如果组合框只有 1项,那么它会被预先选择。我尝试使用DataTriggers,但它不适用于“ SelectedIndex ”属性。但是当我将“ IsEnabled ”属性设置为 false 时,其工作并禁用组合框。
以下是我的代码:
<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'案例中发生这种情况。
答案 0 :(得分: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;
}
}
现在,如果您使用此类而不是标准集合,它将自动将第一个项目设置为选中。要在UI中完成此工作,您只需要将此属性数据绑定到SelectedItem
属性,如下所示:
<DataGrid ItemsSource="{Binding WarehouseList}"
SelectedItem="{Binding WarehouseList.CurrentItem}" />