【发布时间】:2012-07-25 22:16:31
【问题描述】:
我在 PRISM 架构中有一个 WPF 应用程序。
我有一个用户控件(视图),里面有 2 个用户控件。
“搜索用户控件”之所以在其自己的用户控件中,是因为我计划在我的应用程序中重用它。
主用户控件 (black) 称为“MainView”,其中包含 2 个用户控件: - 一个用户控件,它有几个我可以过滤的文本框控件和一个“搜索”按钮 - 一个用户控件,它有一个显示结果的网格
每个用户控件(以及父级“主视图”)都是“视图”并具有“视图模型”。
一切都很好,除了“子”用户控件不会自动创建自己的“视图模型”。
在视图模型的类中,我有 'Export' 属性, 在 View 的代码隐藏中,我有这个 sn-p:
[Import]
FilterFieldsViewModel ViewModel
{
set
{
this.DataContext = value;
}
}
设置“视图模型”确实发生在“主视图”中,但不适用于子视图...
我有一个绑定到“搜索用户控件”的“搜索”按钮的命令, 当应用程序加载时 - 我在输出窗口中收到一个错误,说:
BindingExpression 路径错误:在“对象”“MainWindowViewModel”(HashCode=22047425)上找不到“SearchCommand”属性。绑定表达式:路径=搜索命令; DataItem='MainWindowViewModel' (HashCode=22047425);目标元素是“按钮”(名称=“搜索”);目标属性是“Command”(输入“ICommand”)
出于某种原因,来自“子”用户控件的命令尝试绑定到主窗口视图模型中的视图模型,因为出于某种原因 - 子用户控件的视图模型未实例化。
这是为什么?
【问题讨论】:
标签: c# wpf exception view prism