WPF - MVVM Light,如何绑定/设置ContentControl的内容

时间:2011-07-16 16:22:57

标签: wpf mvvm-light

我是WPF的新手,我想创建一个基于MVVM的应用程序,它使用主窗口作为shell,有一些菜单项,当我点击它们时,Content属性为{{ 1}}改变。

我通过Nuget添加了MVVM Light,现在我有一个ContentControl文件夹,其中包含ViewModelViewModelLocator

我的MainWindow.xaml看起来像这样:

MainViewModel

假设我有一个NetworkView.xaml文件,其视图模型名为NetworkViewModel。

MVVM Light的用途是什么,用于绑定<Window x:Class="WpfMvvmApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="470" Width="900" IsTabStop="False" AllowsTransparency="True" Background="{x:Null}" BorderBrush="#FF3F3F3F" PreviewMouseMove="HandlePreviewMouseMove" SnapsToDevicePixels="True" TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType" ResizeMode="NoResize" WindowStyle="None" WindowStartupLocation="CenterOwner" DataContext="{Binding Main, Source={StaticResource Locator}}"> <Grid> <Border x:Name="m_edgeBorder" x:FieldModifier="private" Margin="10" Background="White" IsHitTestVisible="False" IsEnabled="False"> <Border.Effect> <DropShadowEffect Opacity="0.999" BlurRadius="16" ShadowDepth="0" /> </Border.Effect> </Border> <Grid x:Name="m_contentGrid" x:FieldModifier="private" Background="White" Margin="13"> <Rectangle Height="28" VerticalAlignment="Top" Fill="White" PreviewMouseDown="HandleHeaderPreviewMouseDown" /> <Button HorizontalAlignment="Right" Margin="500,6,8,0" VerticalAlignment="Top" Style="{StaticResource ChromeButtonStyle}" Click="HandleCloseClick"> <TextBlock TextWrapping="Wrap" Text="r" FontFamily="Webdings" Foreground="#FF919191" FontSize="13.333" /> </Button> </Grid> <ContentControl x:Name="ActiveItem" Content="{Binding CurrentViewModel , Mode=OneWay}" Background="Transparent" HorizontalAlignment="Stretch" IsTabStop="False" Focusable="False" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" VerticalAlignment="Bottom" Margin="13,0,12,13" MaxHeight="375" /> </Grid> </Window> 的{​​{1}}属性?我假设您必须设置Content类的ContentControl属性,但我不知道视图的连接是如何发生的,或者我如何控制它。

有人能举个例子吗?

1 个答案:

答案 0 :(得分:1)

你说得对,我唯一看到的是DataTemplate告诉应用程序如何显示NetworkViewModel。

<DataTemplate DataType="{x:Type local:NetworkViewModel}">
    <local:NetworkView />
</DataTemplate>

这会告诉WPF,只要它尝试显示NetworkViewModel,它就应该使用NetworkView控件