【发布时间】:2014-03-11 17:11:04
【问题描述】:
我正在使用 DataTemplate 来提供 View 与 ViewModel 的关联,例如:
<DataTemplate DataType="{x:Type viewModels:SomeViewModel}">
<views:SomeView />
</DataTemplate>
现在我需要在我的 ViewModel 中以某种方式引用视图,因此我可以直接通过其名称引用某些控件。 有什么办法吗?
- 注意 我已经尝试将 SomeView 参数添加到 SomeViewModel Ctor,但 SomeView Ctor 被调用了两次(一个用于我发送到 SomeViewModel Ctor 的实例,并且我猜是因为框架......)
感谢您的帮助
【问题讨论】:
-
那么如果你想在 ViewModel 中引用视图,你就没有使用 MVVM,我不建议这样做。如果您不能直接使用 Binding,我将使用您的
SomeView的代码隐藏文件来访问和更新基于 ViewModel-Properties 的控件或更新 ViewModel-Properties。 -
请尝试在此处解释您的全部需求,以便我们使用 MVVM 方式为您提供更好的解决方案。如果您不想完全使用 MVVM,那么只需捕获视图 onload 事件并在后面的代码中设置“this.DataContext.SomeViewModelSomeProperty = this.WhateverControl”
-
当我尝试在我的视图模型中引用视图时,我知道这不再是 MVVm,在特定情况下我需要将视图收紧到视图模型,有没有办法那个?
-
你具体想做什么?
-
有一个内容控件,根据当前视图模型显示视图。简化 - 认为我有 2 个按钮,当我按下第一个按钮时,它会创建 viewmodel1 并将其设置为 contentcontrol 内容 dp,当我按下第二个按钮时,它会创建 viewmodel2,依此类推。我的问题是我别无选择,只能在我的一个视图中关联一个控件,但是由于数据模板正在执行视图和视图模型之间的关联,我无法在视图模型的 ctor 中传递视图/它的一个控件。够清楚吗?
标签: wpf datatemplate