Я довольно новичок в WPF и хочу создать приложение на основе MVVM, которое использует главное окно в качестве оболочки, имеет несколько пунктов меню, и когда я щелкаю по ним, свойство Content
для ContentControl
изменяется .
Я добавил MVVM Light через Nuget, и теперь у меня есть папка ViewModel
с ViewModelLocator
и MainViewModel
.
Мой MainWindow.xaml выглядит так:
<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>
Допустим, у меня есть файл NetworkView.xaml, и его модель представления называется NetworkViewModel.
Как предполагается использовать MVVM Light для связывания свойства Content
ContentControl
? Я предполагаю, что вы должны установить свойство CurrentViewModel
класса MainViewModel
, но я не знаю, как происходит подключение к представлению или как я могу его контролировать.
Может кто-нибудь привести пример?