かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Visual Studioからデザイン時のDataContextを設定する方法

今までは、Blendのデータタブから設定するか、手書きXAMLするしかないと思ってました。ですが、今日Visual StudioのBindingのダイアログを開いてよく見てみると…

f:id:okazuki:20140324225019p:plain

DataContextがマークアップで設定されていません。
デザイン時のDataContextは、オブジェクトを選択し、[形式]メニューの
[デザイン時のDataContextの設定]をクリックすることによって設定できます。

ふむ…。形式メニューというものなどない。

f:id:okazuki:20140324225438p:plain

ということで、それっぽいメニューをまさぐってたらありました!!「書式」メニューに!!

f:id:okazuki:20140324225813p:plain

DesignData, DesignInstance, StaticResourceから選択できます。これだけできれば文句ないですね。

f:id:okazuki:20140324230058p:plain

WPFでWindowを選択して、このダイアログでDesignInsanceでd:DataContextを設定したらこんな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:WpfApplication1" 
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance {x:Type local:Person}}"
    <!--ここまで-->
    x:Class="WpfApplication1.MainWindow"
    Title="MainWindow" Height="350" Width="525" >
    <Grid>
        <TextBlock HorizontalAlignment="Left" Margin="69,32,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" />

    </Grid>
</Window>

めんどくさいdとかmcとかmc:Ignorable="d"とかも作ってくれるので助かります。ストアアプリでも同じ手順でVisual Studioからデザイン時のDataContextが設定できました。これで、また1つBlendを開く必要がなくなりました。本気でStoryboardとVisualStateManagerとBehaviorだけのためのツールに…。

デザイン時のDataContextを設定したあとは、Bindingがとても快適快適。

f:id:okazuki:20140324230814p:plain

ということで、個人的な大発見でした。