如何设置&;select &;选项作为wpf组合框中的第一个选项

本文关键字:选项 wpf 组合 第一个 select 何设置 设置 | 更新日期: 2023-09-27 18:04:54

我使用Enum逻辑填充组合框。正确填充组合框。但是我想设置"——SELECT——"作为第一个选项。

怎么做?

如何设置&;select &;选项作为wpf组合框中的第一个选项

把它放到你的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;