非常に単純なケースであるはずの DesignData に苦労しています。Windows ユニバーサル プロジェクトで次の簡単なコントロールを定義しました。
<UserControl
...
xmlns:local="clr-namespace:SimpleDataBind"
...
<UserControl.Resources>
<DataTemplate x:Key="SimpleListTemplate">
<TextBox Text="{Binding Name}" />
</DataTemplate>
</UserControl.Resources>
<Grid>
<StackPanel Grid.Row="0" d:DataContext="{d:DesignData Source=./DesignData/Single.xaml}">
<TextBox Text="{Binding Name}"/>
</StackPanel>
<ListView Grid.Row="1" d:DataContext="{d:DesignData Source=./DesignData/Multiple.xaml}"
ItemTemplate="{StaticResource SimpleListTemplate}"
ItemsSource="{Binding collection}">
</ListView>
</Grid>
クラスは次のように定義されています。
public class Element
{
public Element() { }
public string Name { get; set; }
}
public class ElementCollection : ObservableCollection<Element>
{
public ElementCollection() { }
}
型 ElementCollection の要素「コレクション」が codeBehind で定義され、有効なバインディング ソースが提供されます。
Single.xaml は簡単です:
<local:Element xmlns:local="clr-namespace:SimpleDataBind" Name="Single" />
複数も同様です。
<local:ElementCollection xmlns:local="clr-namespace:SimpleDataBind" >
<local:Element Name="Multiple Pete" />
<local:Element Name="Multiple George" />
<local:Element Name="Multiple John" />
</local:ElementCollection>
Designer で表示すると、上記の設計データが表示されます。実際、コントロールは、グリッドの最初の行に名前として「Single」を正しく表示します。ただし、コントロールはグリッドの 2 行目に何も表示しません。
明らかな何かが明らかに欠けています...