【发布时间】:2015-09-29 03:04:42
【问题描述】:
我最近一直在查看 Josh Smith 的代码(来自他著名的 MVVM 文章),并且我一直在尝试创建一个遵循他理想的 MVVM 模式的程序。
现在问题来了,在 Josh Smith 的项目的 MainWindowResources 中,他将 View 绑定到(此处仅使用任意名称)ExampleViewModel,因此 TabControl(工作区)显示 ExampleView 而不仅仅是 ExampleViewModel 的 .ToString()。示例:
<DataTemplate DataType="{x:Type vm:ExampleViewModel}">
<vw:ExampleView />
</DataTemplate>
通常,当视图不接受任何参数时,这段代码会起作用。但是对于这个项目,我在 View 的构造函数参数中采用了 ViewModel:
public ExampleView(ExampleViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
所以现在,我处于静止状态——这种类型的绑定只允许无参数的构造函数。
那么我该如何解决这个问题,同时仍将 View 绑定到 ViewModel,其中所说的 View 具有构造函数参数?
【问题讨论】:
-
Stack Overflow 上已经存在许多与 MVVM 的一般使用相关的问题,包括讨论如何绕过在 XAML 中绑定时无法为构造函数指定参数的限制,例如我'已作为重复链接提供。
-
@PeterDuniho 顶部添加的链接没有回答这个问题。但我同意,有很多线程处理 MVVM 方面。
-
我假设你不理解我的问题,所以我会认为我的问题不是重复的,直到你能给我一个适当的链接以及我的具体问题的正确答案。