我想我在这里缺少一些简单的东西。
这就是我想要的: 我想创建一个MainWindowViewModel实例mwVM。 我想将此实例与MainWindow相关联。
我想将视图实例与mwVM的viewModel1成员相关联。 因此,我实际上想要在View中从viewModel传递实例层次结构。到目前为止,我无法看到只是观点。
我正在尝试在WPF窗口中呈现自定义ContentControl。 当我将MainWindow.xaml作为应用程序的入口点时,我什么都看不到。但是当我将view1.xaml作为入口点(在App.xaml中)时,我可以看到文本“Hello”。我在这里失踪的是什么?
MainWindow.xaml
<Window x:Class="MimicView.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MimicView"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MainWindowViewModel}"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:ViewModel1}">
<local:View1/>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="{Binding viewModel1}"></ContentControl>
</Grid>
MainWindowViewModel.cs
namespace MimicView {
class MainWindowViewModel {
public MainWindowViewModel() {
this.viewModel1 = new ViewModel1();
}
public ViewModel1 viewModel1 { get; set; }
}
}
View1.xaml
<UserControl x:Class="MimicView.View1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MimicView"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
d:DataContext="{d:DesignInstance local:ViewModel1}">
<TextBox Text="Hello"/>
的App.xaml
<Application x:Class="MimicView.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MimicView"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
答案 0 :(得分:1)
设置窗口的DataContext
属性:
<Window x:Class="MimicView.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MimicView"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MainWindowViewModel}"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:ViewModel1}">
<local:View1/>
</DataTemplate>
</Window.Resources>
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>
<Grid>
<ContentControl Content="{Binding viewModel1}"></ContentControl>
</Grid>
</Window>
这仅设置设计时间 DataContext
:
d:DataContext="{d:DesignInstance local:MainWindowViewModel}"
您还应该设置实际的DataContext
属性:
<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>