БЫСТРЫЙ ОТВЕТ: Установите SelectedIndex = 1
из-за кода.
Кажется, что код в XAML выполняется первым (метод InitializeComponent()
), который устанавливает SelectedIndex = 1
, но ItemsSource
еще не определено! Так что SelectedIndex
не повлияет! (И помните, вы не можете указать ItemsSource
до 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>
Код
cbo.ItemsSource = ser.GetCity().DefaultView;
cbo.SelectedIndex = 1;
Или это:
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>
Код
private void cbo_Initialized(object sender, EventArgs e)
{
cbo.SelectedIndex = 1;
}
Также обратите внимание, что я удалил DisplayMemberPath="NAME"
, потому что вы не можете одновременно установить DisplayMemberPath
и ItemTemplate
. А также используйте либо SelectedItem
или SelectedIndex
, но не оба.