如何设置&;select &;选项作为wpf组合框中的第一个选项
本文关键字:选项 wpf 组合 第一个 select 何设置 设置 | 更新日期: 2023-09-27 18:04:54
我使用Enum逻辑填充组合框。正确填充组合框。但是我想设置"——SELECT——"作为第一个选项。
怎么做?
把它放到你的xaml组合框
SelectedIndex="0"
在发送给视图之前修改一下列表:
public List<string> YourList
{
get
{
if (_list[0] != "--Select--")
_list = _list.Insert(0, "--Select--");
return _list;
}
}
尝试设置空值
<ComboBox SelectedItem="{Binding Item}" ItemsSource="{Binding Items}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="displayText" Text="{Binding}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter TargetName="displayText" Property="Text" Value="--Select--" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
和VM:
public ObservableCollection<string> Items
{
get
{
return new ObservableCollection<string>
{
null,"1","2","3"
};
}
}
public string Item { get; set; }
可能最简单的方法是将ComboBox
设置为可编辑的,这样您就可以设置自定义文本,并且只读,这样项目只能被选中:
<ComboBox IsEditable="True" IsReadOnly="True" Text="--SELECT--" />
注意,这将改变控件的外观,所以如果这对您来说是一个问题,您将不得不使用更复杂的解决方案。
如果你的类有一个属性,你想在组合框中显示,看看下面的方法:
为你的类设置一个命名空间:
xmlns:models="clr-namespace:Company.ProjectName.Models;assembly=Company.ProjectName.Models"
然后在你的ComboBox中添加一个新的Item,像这样:
<ComboBox DisplayMemberPath="Name" SelectedItem="{Binding BindingProperty, Mode=TwoWay}" >
<ComboBox.ItemsSource>
<CompositeCollection>
<models:CustomClass Name="--SELECT--" ID="0"/>
<!--<ComboBoxItem Background="LightGray" IsHitTestVisible="False" Height="1" Margin="7,0,7,0" IsEnabled="False" Focusable="False"/> !-->
<CollectionContainer Collection="{Binding Source={StaticResource ObservableCollection}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
您可以在从数据库中检索数据后将值(——SELECT——)添加到数据表中,并将所选索引设置为0。
DataRow row = dt.NewRow();
row["DATA"] = "--SELECT--";
dt.Rows.InsertAt(row, 0);
绑定combobox1.SelectedIndex = 0;
后