我有这个观点:
<Window x:Class="Ohmio.Client.PruebasView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Ohmio.Client"
Title="Pruebas" Height="284" Width="626">
<Window.DataContext>
<local:PruebasViewModel/>
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Content="Create View"/>
<Button Grid.Row="1" Content="Create child View" Click="Button_Click_1"></Button>
<ContentPresenter x:Name="ContentPrt" Grid.Row="2" Margin="5"></ContentPresenter>
</Grid>
我的想法是在内容展示器中加载第二个视图(子视图)。仅仅是为了测试我是从代码隐藏中做到这一点:
this.ContentPrt.Content = new ModalViewModel();
所以我的问题是:如何让新视图(contentPresenter上的一个加载)与PruebasView共享相同的dataContext? (在本例中,PruebasViewModel)
谢谢!
答案 0 :(得分:1)
如果我理解你的问题,那很简单。只需将PruebasViewModel传递给ContentPresenter作为数据上下文。
<ContentPresenter x:Name="ContentPrt" DataContext={Binding} Grid.Row="2" Margin="5"></ContentPresenter>
答案 1 :(得分:0)
我认为ModalViewModel
是您的子视图类。因此,当您将其添加到内容展示器时,您的View将成为Visual Tree的一部分,因此自动共享主窗口的DataContext
。
实际上,WPF为您完成了这项工作:内容演示者的内容将自己“看到”PruebasViewModel。
修改强>
我没有读到您使用的是Caliburn Micro,但这个想法没有改变。