WPF で DataContext を 設定 する 方法

0 件のコメント

WPF で DataContext を設定する方法はコード上でプロパティに設定する方法とXAML上で記載する方法と2種類あります。 ここではそれぞれについて、設定する方法を記載します。

プロパティ に設定する方法

csファイル のコンストラクタにおいて、DataContext プロパティを直接設定する方法です。 ViewModel を生成するだけでなく、初期設定等を行う場合はこの方法が便利だと思います。 XAML に DataContext を記載しないので、XAML 上で DataContext に何が設定されているかあらかじめ知っている必要があることになるかと思います。

MainView.xaml.cs

namespace WpfApplication.View
{
    using System.Windows;

    public partial class MainView : Window
    {
        public MainView()
        {
            this.InitializeComponent();
            this.DataContext = new WpfApplication.ViewModel.MainViewModel();
        }
    }
}

XAML に記載する方法

XAML 上で設定する方法です。 初期化時にあれこれはできませんが、XAMLとコードがキレイに分離できていると思います。

MainView.xaml

<Window x:Class="WpfApplication.View.MainView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfApplication.ViewModel"
        Title="MainWindow" Height="125" Width="210">
    <Window.DataContext>
        <vm:MainViewModel />
    </Window.DataContext>
    <Grid>
        <TextBox Name="messagetext" Text="{Binding Path=Message}" Height="23" Margin="10,26,10,0" TextWrapping="Wrap" VerticalAlignment="Top"/>
        <Button Name="openbutton" Content="Open" Margin="0,54,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="75" Command="{Binding Path=OpenMessageDialogCommand}" CommandParameter="{Binding ElementName=messagetext, Path=Text}"/>
    </Grid>
</Window>