WPF:为什么我的 ComboBox SelectedItem 不显示?



(此问题已更新)

我有:

  • Window1 -带DataGrid
  • Window2 -在那里我创建新的DataGrid
  • Window3 -我打开DataGrid行作为配置文件查看其

我的问题:

当我打开Window3时,组合框没有显示我在Window2中选择的项目

在Window2中的组合框是这样绑定的:

<ComboBox
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>

我更喜欢保持这样,只是硬编码在项目中,因为可能不会有更多的。

当我保存它时,我切换到Window1,打开我刚保存的行

DataGridSelectedItem是由属性(名为"Selected"),这对每个对象在Window3(几个文本框-这些工作很好,和一个组合框-不工作!)。ComboBox存储了我需要的数据,但没有将我之前的选择显示为SelectedItem

在Window3的组合框是这样绑定的:

<ComboBox
DataContext="{Binding Path=(viewmodel:LicenseHolderViewModel.Selected)}"
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>

因此,项目显示在ComboBox中,但默认情况下没有选择任何项目。如果我从XAML中删除ComboBoxItem,则ComboBox只是空的(自然)。我试着添加ItemsSource="{Binding PropertyName}"(..a shot in dark),这只是添加了一个项目,分为三个(E, P, F),但它们都没有设置为SelectedItem

可能值得注意的是,我的框架自动耦合视图与视图模型,我必须设置另一个viewmodels属性作为每个对象DataContext,可能会导致一些问题?(我试着测试了一下,但我不能确认是不是这样)。

您应该将所选ComboBoxItemContent绑定到source属性。为此,您应该将其绑定到SelectedValue属性,并设置SelectedValuePath属性:

<ComboBox
SelectedValue="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="Content">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>

你有SelectedItem="{Binding PropertyName}">

但是SelectedItem的类型是ComboBoxItem。

你想要SelectedValue="{Binding PropertyName}">

可以绑定到ComboBox。文本:

Text="{Binding PropertyName, Mode=OneWayToSource}" >

相关内容

  • 没有找到相关文章

最新更新