我正在尝试将组合框中的第一个项目默认设置为所选项目。但是以下代码不起作用:
<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 :(得分: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}”