快速回答:设置SelectedIndex = 1
来自代码隐藏。
看起来 XAML 中的代码首先执行(InitializeComponent()
方法),它设置SelectedIndex = 1
, but ItemsSource
还没有指定!所以SelectedIndex
不会影响! (记住,你不能指定ItemsSource
before InitializeComponent()
)
所以需要手动设置SelectedIndex = 1
设置后ItemsSource
.
你应该这样做:
XAML
<ComboBox x:Name="cbo"
Style="{StaticResource ComboStyle1}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Path=NAME}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Code
cbo.ItemsSource = ser.GetCity().DefaultView;
cbo.SelectedIndex = 1;
Or this:
XAML
<ComboBox x:Name="cbo" Initialized="cbo_Initialized"
Style="{StaticResource ComboStyle1}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Path=NAME}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Code
private void cbo_Initialized(object sender, EventArgs e)
{
cbo.SelectedIndex = 1;
}
另请注意,我已删除DisplayMemberPath="NAME"
因为你不能同时设置DisplayMemberPath
and ItemTemplate
同时。而且,使用SelectedItem
or SelectedIndex
, 不是都。