Buc*_*uck 4 c# wpf xaml binding wpf-controls
我已经尝试了几次在帖子中找到答案但尚未找到答案(至少在我理解的情况下,因为WPF相当新).
我在视图构造函数中定义了一个数据上下文:
this.DataContext = viewModel;
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想在一个视图中使用多个数据上下文?我从其他人那里听到了多个不一致的答案.目标是我需要访问多个视图模型中的属性.例如,我的视图XAML用于如下所示的情况:
<MultiBinding Converter="{StaticResource multiBooleanToVisibilityConverter}">
<Binding Path="ResultControlsVisibileByDefault" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="StarWidthValueList.Count" UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)
如果我可以在适当的视图模型中显式引用每个属性,那将会很棒.
注意:有多个基于窗口的视图模型覆盖在主窗口中.它们基于用户进行的类似向导的选择而变为活动状态.
Bla*_*hma 16
我发现最简单的解决方案是使用一个ViewModel来保存其他ViewModel Properties.然后View可以从所有不同的ViewModel访问他想要的属性......
为了说明,您可以拥有一个VMContainer:
public class VMContainer
{
public FirstViewModel VM1 { get; set; }
public SecondViewModel VM2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在在您的视图中将您设置为已DataContext在VMContainer其中设置特定VM属性的实例...
然后你可以在XAML中做这样的事情
<Textbox Text="{Binding VM1.SomePropertyInFirstViewModel}" />
<Textbox Text="{Binding VM2.SomePropertyInSecondViewModel}" />
Run Code Online (Sandbox Code Playgroud)
值得一提的是,你不具备创建一个全新的VMContainer类只是这一点.您也可以在现有VM中为该其他VM添加新属性(如果可能/逻辑基于您的VM代表的内容)
| 归档时间: |
|
| 查看次数: |
8176 次 |
| 最近记录: |