2014-06-25 89 views
0

我试图在默认情况下将组合框中的第一个项目设置为选定项目。但是,下面的代码是不工作:将第一个项目设置为WPF组合框中的选定项目

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

不应该在SelectedItem中绑定ProgramCodeSource而不是ProgramCode? –

+0

看看这个页面http://timhibbard.com/blog/2012/04/17/wpf-combobox-initial-selection/ –

+0

可能是一个愚蠢的问题,但你设置ProgramCode为ProgramCodeSource集合中的第一个对象在绑定之前,或者在绑定之后设置属性更改? – JimBobBennett

回答

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()方法没有返回,也不会有误差为好。

0

尝试使用的SelectedValue =“{结合的程序代码,模式=双向}”

+0

我尝试使用选定的值,但默认情况下未选择第一项。 – user2480288

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}"> 
相关问题