在Combobox获得焦点后,WPF ComboBoxItem样式被加载

时间:2017-09-19 06:27:41

标签: c# wpf xaml mvvm combobox

我正在开发一个学习MVVM的应用程序。我现在有一个问题,但我找不到类似的案例。

首先是我的代码:

<ComboBox Width="100" DisplayMemberPath="Name" ItemsSource="{Binding MyList}">
  <ComboBox.Resources>
     <Style TargetType="ComboBoxItem">
       <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
     </Style>
  </ComboBox.Resources>
</ComboBox>

我有一个简单对象列表,结构如下:

  • 属性:字符串名称
  • 属性:bool IsSelected

我将此对象列表绑定到ComboBox并将IsSelected - 我的对象的属性绑定到IsSelected - ComboBoxItem的属性。绑定工作正常,我的对象在ComboBox,如果我选择一个项IsSelected - 属性得到更新。

但问题是,在应用程序开始时,没有可见的选定项目。我必须点击ComboBox才能看到所选项目。我认为ComboBoxItem的样式在其父对象获得焦点后会被加载。

有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

您应该将SelectedItem的{​​{1}}属性设置或绑定到要选择的项目的实例:

ComboBox
<ComboBox Width="100" DisplayMemberPath="Name" ItemsSource="{Binding MyList}" SelectedItem="{Binding Selected}">
...

这是使用MVVM在Selected = MyList.FirstOrDefault(x => x.IsSelected == true); 中选择项目的方法。您没有定义ComboBox样式。