小さなMVVMテストアプリケーションを構築しようとしていますが、メインウィンドウにユーザーコントロールを表示する方法がわかりません。
私のソリューションエクスプローラー:
リソース辞書を入手しました:
<ResourceDictionary
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MVVM.ViewModel"
xmlns:vw="clr-namespace:MVVM.View">
<DataTemplate DataType="{x:Type vm:ViewModel}">
<vw:View />
</DataTemplate>
</ResourceDictionary>
私は私の見解を得ました:
<UserControl x:Class="MVVM.View.View"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<DataTemplate x:Key="PersonTemplate">
<StackPanel>
<TextBlock Text="{Binding FirstName}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<ListBox ItemsSource="{Binding Path=Persons}"
ItemTemplate="{StaticResource PersonTemplate}" />
</UserControl>
と私のメインウィンドウ
<Window x:Class="MVVM.MainWindow"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MVVM.ViewModel"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ResourceDictionary Source="MainWindowResources.xaml" />
</Window.Resources>
<Grid>
</Grid>
</Window>
最も明白で最も簡単な方法は、ContentControl
要素を追加することです。
<Grid>
<ContentControl x:Name="mainContentControl" />
</Grid>
その後、このコントロールのContent
プロパティをビューモデルに設定すると、対応するビューが自動的に読み込まれ、適用されます。
this.mainContentControl.Content = new ViewModel.ViewModel();
しかし、私はデータテンプレートなしで別の方法を使用したいと思います:
<Grid>
<vw:View x:Name="mainView"/>
</Grid>
this.mainView.DataContext = new ViewModel.ViewModel();
VS2010ソリューションを構築してから、MainWindowのXAMLに移動します。
左側には、「ツールボックス」ボタンのあるツールバーがあります
それを開くと、UIに追加できるすべての可能なWPFコントロールが含まれています
UserControlがリストの一番上に表示されます(おそらく「MVVMControls」という名前のカテゴリにあります)。UIにドラッグアンドドロップするだけです:)