WPFのデザイン時ItemsSourceのXAMLでの設定方法について


WPF、.Net 4.5、Visual Studio 2013 Communityの環境で、  
デザイン時にItemsSourceにXAMLから値を設定する方法について知っている方が居れば教えて下さい。

XAML上でデザイン時`DataContext`を設定する時(`d:DataContext="{d:DesignData
Source=SomeDesignData.xaml}"`)の様な形で、`ItemsControl`系の`UIElement`に対してデザイン時`ItemsSource`を設定したいと思っています。

コード上で行うのであれば、対象となる`UIElement`の`DataContext`に設定されるクラスのコンストラクタで`DesignerProperties.GetIsInDesignMode(new
DependencyObject())`を使って条件分岐して`ItemsSource`の`Binding`先プロパティにデザイン用データをセットすれば良いのですが、これを使うといわゆるMVVMのVM層にデザイン用データが張り出してしまうため、出来れば避けたいと思っています。

何か良い方法、あるいは定石となる方法があれば教えて下さい。




DataContextもd:DataContextもFrameworkElementの階層構造に従ったBindingのPathを受け継ぎます。  
つまり、

[code]

    <Grid x:Name="parentGrid">
        <ListBox x:Name="list1"/>
    </Grid>
    
[/code]

という親子関係があった場合、list1のItemsSourceを直接サンプルデータにBindするのではなく、parentGridのDataContext及びd:DataContextを指定し、list1のItemsSourceは{Binding
Items}などとparentGridのDataContextからの相対PathでBindして、

[code]

    <Grid x:Name="parentGrid" d:DataContext="{d:DesignData /SampleData/Foo.xaml}">
        <ListBox x:Name="list1" ItemsSource="{Binding Items}"/>
    </Grid>
    
[/code]

等としてやれば、DataContextにVMがBindされている場合はviewmodel.Itemsメンバに、デザイン時は、Foo.xamlのサンプルデータの階層構造のItemsに、それぞれコードビハインドを考慮することなく、ViewModelとサンプルデータを切り替えることができます。

> 参考:  
>  Web APIで取得したXML/JSONからVSデザイナで表示できるリアルなXAMLサンプルデータを作成する - Neutral Scent  
>  <http://d.hatena.ne.jp/kaorun/20131202/1385955900>




DataContextもd:DataContextもFrameworkElementの階層構造に従ったBindingのPathを受け継ぎます。  
つまり、

[code]

    <Grid x:Name="parentGrid">
        <ListBox x:Name="list1"/>
    </Grid>
    
[/code]

という親子関係があった場合、list1のItemsSourceを直接サンプルデータにBindするのではなく、parentGridのDataContext及びd:DataContextを指定し、list1のItemsSourceは{Binding
Items}などとparentGridのDataContextからの相対PathでBindして、

[code]

    <Grid x:Name="parentGrid" d:DataContext="{d:DesignData /SampleData/Foo.xaml}">
        <ListBox x:Name="list1" ItemsSource="{Binding Items}"/>
    </Grid>
    
[/code]

等としてやれば、DataContextにVMがBindされている場合はviewmodel.Itemsメンバに、デザイン時は、Foo.xamlのサンプルデータの階層構造のItemsに、それぞれコードビハインドを考慮することなく、ViewModelとサンプルデータを切り替えることができます。

> 参考:  
>  Web APIで取得したXML/JSONからVSデザイナで表示できるリアルなXAMLサンプルデータを作成する - Neutral Scent  
>  <http://d.hatena.ne.jp/kaorun/20131202/1385955900>

