【发布时间】:2021-10-13 02:14:48
【问题描述】:
(此问题已更新)
我有:
- Window1 - 带有
DataGrid - Window2 - 我在其中创建新的
DataGrid行 - Window3 - 我打开
DataGrid行作为配置文件以查看其 内容
我的问题:
当我打开 Window3 时,ComboBox 不显示我在 Window2 中选择的项目
Window2中的ComboBox是这样绑定的:
<ComboBox
Text="{Binding PropertyName, UpdateSourceTrigger=PropertyChanged}">
<ComboBoxItem Content="AS">
</ComboBoxItem>
<ComboBoxItem Content="ASA">
</ComboBoxItem>
<ComboBoxItem Content="ANS">
</ComboBoxItem>
<ComboBoxItem Content="EPF">
</ComboBoxItem>
</ComboBox>
我宁愿保持这种状态,只是在项目中硬编码,因为它们可能不会再有了。
当我保存它时,我转到 Window1,然后打开我刚刚保存的行。
DataGrid SelectedItem 受属性(名为“Selected”)的约束,该属性与 Window3 中的每个对象(几个文本框 - 这些工作正常,一个组合框 - 不起作用!)。 ComboBox 存储了我需要的数据,但没有将我之前的选择显示为SelectedItem。
Window3中的ComboBox是这样绑定的:
<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}"(..在黑暗中拍摄),这只是添加了一个项目,分为三个(E、P、F),但没有一个设置为SelectedItem。
可能值得注意的是,我的框架会自动将视图与视图模型耦合,并且我必须将另一个 ViewModels 属性设置为每个对象 DataContext,这可能会导致一些问题? (我尝试对此进行测试,但我无法确认是否是这种情况)。
【问题讨论】:
-
我做错了什么?您假设
string可以自动转换为NameOfModel...明显的解决方案...您应该绑定@987654334 @ 的ItemsSource到IEnumerable<NameOfModel>(而不是使用ComboBoxItem)和SelectedItem应该绑定到类型NameOfModel...NameOfModel的实例也应该能够将其与其他实例进行比较 -
@Sandra:
PropertyName是什么类型,window2 的DataContext是什么? -
d:DataContext只是 Visual Studio 设计师的东西。运行应用程序时它没有效果。你看到我的回答了吗?