XAML内でDataContextに使用したいクラスを指定する方法の解説とサンプルコードです。
DataContextを設定する方法
-
Windowsタグ内にDataContextで使用するクラスのネームスペースを定義します。
<Window xmlns:vm="clr-namespace:ここにネームスペース" > </Window>
-
Windows.DataContextタグ内にDataContextのクラスを指定します。
<Window xmlns:vm="clr-namespace:ここにネームスペース" > <Window.DataContext> <vm:ここにクラス名 /> </Window.DataContext> </Window>
※ 「xmlns:vm」と「<vm:ここにクラス名 />」のvmは一致していれば変更可能です。
サンプル
次のサンプルでは、クラス「WpfApplication.ViewModel.LoginViewModel」をデータコンテキストに指定しています。XAML
<Window
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:WpfApplication"
xmlns:Common="clr-namespace:Common;assembly=Common" x:Class="WpfApplication.MainWindow"
xmlns:vm="clr-namespace:WpfApplication.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525"
>
<!--データコンテキスト定義-->
<Window.DataContext>
<vm:LoginViewModel />
</Window.DataContext>
<Grid>
</Grid>
</Window>
注意
プロジェクト内に対象となるネームスペースとクラスが無いとコンパイルエラーが発生します。-
ネームスペースがない場合
エラー CS0234 型または名前空間の名前 'ネームスペース' が名前空間 'ルート名前空間' に存在しません (アセンブリ参照があることを確認してください)。 -
クラスがない場合
タグ 'クラス名' は、XML 名前空間 'clr-namespace:ネームスペース' にありません。
検証環境
- Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3
- Microsoft .NET Framework Version 4.6.01055
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))