c# - 禁用 ReactiveUI ItemsView.ItemTemplate Hook

标签 c# wpf itemscontrol reactiveui itemtemplate

ItemsViewItemsView 的子类如 ListBox, ComboBox, ..., ReactiveUI 自动设置ItemTemplate 属性。这使得向列表中添加一堆 View 模型、将列表绑定(bind)到 ItemsView 并为每个 View 模型提供正确的 View 变得很容易。

但是,有时这种行为是不可取的。例如,将常规对象列表绑定(bind)到 ComboBox 后,我得到异常“Couldn't find view for MyNamespace.MyObject”。

我可以通过在 ComboBox 上设置 DisplayMemberPath 属性来解决这个问题,但是这个属性在编译时是未知的。我想将 DisplayMemberPath 从 ViewModel 绑定(bind)到 View。不幸的是,这会产生以下异常:“InvalidOperationException:无法同时设置 DisplayMemberPath 和 ItemTemplate”

我该如何解决这个问题?

最佳答案

在控件上为 DisplayMemberPath 设置一个虚拟值,并保持 DisplayMemberPath 与 ViewModel 的绑定(bind)。 ReactiveUI 将看到虚拟值并且不会设置 ItemTemplate 属性。一旦附加了 ViewModel,虚拟值就会被绑定(bind)替换,一切都会按预期工作。

关于c# - 禁用 ReactiveUI ItemsView.ItemTemplate Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45638376/

相关文章:

WPF 错误 : "Items collection must be empty before using ItemsSource."

wpf - 如何在 ItemTemplate 中找到我的 "CheckBox"项目?

wpf使用网格作为itemshost自动将多个项目堆叠在单个 'cell'中

c# - 为 WCF 实现接口(interface)时不能使用可选参数

c# - WCF 通话 - 最佳实践

c# - WPF 数据网格虚拟化和自动高度(不明确)

.net - 在运行时枚举 .NET 程序集资源

c# - 我如何通过 postgres 加密并通过 c# 解密?

c# - 为什么 'Any CPU (prefer 32-bit)' 允许我在 .NET 4.5 下分配比 x86 更多的内存?

c# - 如何在 WPF 中使按钮的透明部分可单击?