在WPF组合框中将第一项设置为选定项

本文关键字:一项 设置 组合 WPF | 更新日期: 2023-09-27 18:10:12

我试图将组合框中的第一个项目设置为默认选择的项目。但是下面的代码不能工作:

<ComboBox HorizontalAlignment="Left" x:Name="cbxPrograms" Grid.Column="2" Grid.Row="1"
VerticalAlignment="Top" Width="270" Height="28" IsSynchronizedWithCurrentItem="True"
          SelectedIndex="0"              
          ItemsSource= "{Binding Path=ProgramCodeSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True,
NotifyOnValidationError=True}" 
          SelectedItem="{Binding ProgramCode, Mode=TwoWay}">

在WPF组合框中将第一项设置为选定项

如果您有一个名为ProgramCodeSource的集合属性和一个名为ProgramCode的集合属性,其类型与集合中的项相同…:

<ComboBox ItemsSource="{Binding ProgramCodeSource}" 
    SelectedItem="{Binding ProgramCode, Mode=TwoWay}" ... />

…然后,您可以从具有属性的类中选择ComboBox中的第一个项目,只需像这样使用LinQ:

ProgramCode = ProgramCodeSource.FirstOrDefault();

你可以在你初始化你的数据之后做:

ProgramCodeSource = new ObservableCollection<YourDataType>(GetData());
ProgramCode = ProgramCodeSource.FirstOrDefault();

使用FirstOrDefault方法是好的,因为如果GetData()方法不返回任何值,则不会有错误。

我不知道你的视图模型是什么样子的,但是你的SelectedItem需要被设置为列表中类型的一个实例。

<ComboBox 
    HorizontalAlignment="Left" 
    x:Name="cbxPrograms" 
    Grid.Column="2" 
    Grid.Row="1"
    VerticalAlignment="Top" 
    Width="270" 
    Height="28" 
    SelectedIndex="0" 
    IsSynchronizedWithCurrentItem="True"
    ItemsSource= "
        {Binding Path=EntityCollectionSource, 
        UpdateSourceTrigger=PropertyChanged, 
        ValidatesOnDataErrors=True,
        NotifyOnValidationError=True}" 
    SelectedItem="{Binding Entity,Mode=TwoWay}">

try use SelectedValue="{Binding ProgramCode, Mode= two - way}"