Xamlにdesign instanceを設定(C# WPF)

C#
<Window x:Class="TestApp.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:prism="http://prismlibrary.com/"
        
        xmlns:vm="clr-namespace:TestApp.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d"
        d:DataContext="{d:DesignInstance vm:MainWindowViewModel}"
        
        prism:ViewModelLocator.AutoWireViewModel="True"
        Height="350" Width="600">

追加する部分は中央の領域です。

xmlns:vm="clr-namespace:TestApp.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MainWindowViewModel}"

最初のxmlns:vm=”clr-namespace:TestApp.ViewModels”の部分は
localの文字を当てているケースが多いですね。
私はViewModelが置いてある場所を指定しているのでvmというワードにしています。

mc:Ignorable=”d”
を書くことによってコンパイル後は無視してくれるので忘れず付けましょう。

d:DataContext=”{d:DesignInstance vm:MainWindowViewModel}”
の部分は、ViewModelが引数を持つ場合はこの書き方になります。

引数を持たない場合は、以下のように書くこともできます。
d:DataContext=”{d:DesignInstance vm:MainWindowViewModel, IsDesignTimeCreatable=True}”

IsDesignTimeCreatable=True を書けば、デザインプレビュー時にインスタンスが作成されるようになるため、値を見ることができるようになります。

コメント