在 ItemsView
和 ItemsView
的子类如 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/