【发布时间】:2012-04-22 13:27:28
【问题描述】:
我正在使用 MVVM 设计一些复杂的用户控件。 UserControls 的数据上下文处理所有逻辑,并将 UserControl 交互的结果提供给控件的使用者。
我面临的问题是,看起来 internal 不适用于绑定,如果我尝试绑定到非公共绑定的源属性,则该属性不起作用。如果我必须打开(amek public)我的 VM 顶部的所有源属性能够绑定它们,那么我将打开 UserControl 和消费者的内部:
- 对使用什么属性感到困惑。
- 可以使用不适合外部使用的属性破坏事物。
有什么想法吗?
提前致谢。
编辑:嗯,看看this 看起来源必须始终是公开的,对吧。但后来我仍然面临公开内部信息的问题。有什么解决办法吗?
示例:
您创建一个通用的用户控件。该控件应该是一个黑盒,它接受最终用户提供的查询,向他显示(以某种方式)查询返回的行,并让 UserControl 使用者获取选定的值。该控件是使用显示行的组合框实现的。
UserControl 位于 UserControl.xaml 中,并且有一个 UserControlVM.cs 文件,其中包含 UserControl 的 ViewModel。
ViewModel 包含要执行的查询、查询返回的项目列表和所选项目。项目列表和选定项目是公开的,以便能够绑定到 UserControl。
消费者在其窗口内使用一个 UserControl 实例,在其窗口视图模型内使用一个 UserControlVM 实例。我面临的问题是最终用户有权访问查询返回的项目列表,而他只应该有权访问所选项目。
【问题讨论】:
标签: wpf mvvm binding user-controls