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

时间:2014-06-25 18:29:54

标签: c# wpf xaml combobox

我正在尝试将组合框中的第一个项目默认设置为所选项目。但是以下代码不起作用:

<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}">

3 个答案:

答案 0 :(得分:1)

我不知道您的视图模型是什么样的,但您的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}">

答案 1 :(得分:1)

如果您有一个名为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()方法没有返回任何内容,则不会出现错误。

答案 2 :(得分:0)

尝试使用SelectedValue =“{Binding ProgramCode,Mode = TwoWay}”