将 UserControl 加载到 ComboBox 更改上的窗口区域
我有 ComboBox,其中填充了自定义类型的集合。在组合框更改时,我想加载/更改特定区域中的内容,以便加载所选组合框项的相关数据(它可以采用加载 userControl 的形式,或者我不介意为其指定 DataTemplate)。
它类似于这个问题WPF负载控制问题。但在这个问题中,他谈论的是实际列表框中的各个 DataTemplates,而我谈论的是在 ComboBox 更改上填充某些窗口区域。
我正在使用 MVVM(而不是 PRISM).Net 3.5。
I have got ComboBox which is populated with collection of customTypes. On comboBox change, I would like to load/change content in the particular region so that it loads related data for the selected ComboBox item (it could be in the form of loading userControl or I i dont mind specifying DataTemplate for it).
It is similar to this question WPF Load Control question. But in this question, he is talking about individual DataTemplates in the actual Listbox, while I am talking about populating certain window region on ComboBox change.
I am using MVVM (and not PRISM) .Net 3.5.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
ContentControl
,它是根据组合框选择动态确定的实际Content
的占位符。以下代码仅供参考
数据加载可以是
MyView1
和MyView2
用户控件的构造函数或主 UI 的数据上下文视图模型的一部分。U could use
ContentControl
which is the placeholder for the actualContent
that is dynamically decided as per combobox selection.The follwoing code is just for guidance
The data loading can be part of the
MyView1
andMyView2
user control's constructor or your main UI's data context view model.据我了解,问题是如何更改绑定到 UI 而不仅仅是 DataTemplate 的基础数据。
您可以使用
EventSetter
,它将在后面的代码中处理,您可以在其中切换您提到的区域的 DataContext:但从 MVVM 的角度来看,这可能不是完美的解决方案,因此您可以引入自己的 ComboBox 类是否支持命令,请参阅此帖子:ComboBox 中的 WPF 命令支持
通过这种方式,您可以使用 Command 将逻辑与 UI 解耦。
As far as I understand the question is how to change underlying data being bound to UI and not a DataTemplate only.
You can use
EventSetter
which will be handled in code behind where you can switch DataContext for a region you've mentioned:But from MVVM perspectives it could be not perfect solution so you can introduce your own ComboBox class wich is Command aware, see this SO post: WPF command support in ComboBox
In this way you can decouple logic from UI using Command.