Использование DesignData в Windows Universal Collection
Я борюсь с 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() { }
}
Элемент 'collection' типа ElementCollection определен в codeBehind для предоставления действительного источника привязки.
Single.xaml тривиален:
<local:Element xmlns:local="clr-namespace:SimpleDataBind" Name="Single" />
Multiple одинаково так:
<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 мы должны увидеть данные дизайна выше. И действительно, Control показывает "Single" в качестве имени правильно в первом ряду таблицы. Однако элемент управления ничего не показывает во втором ряду таблицы.
Я явно упускаю что-то очевидное...
1 ответ
ОК, наконец-то понял это. Решение состоит не в том, чтобы связываться с объектом времени выполнения в XAML; т.е. в моем исходном коде выше замените элемент
ItemsSource="{Binding collection}"
с элементом
ItemsSource="{Binding}"
Тогда вы, очевидно, можете связываться с объектом времени выполнения в... время выполнения.
Интересно (и, возможно, очевидно, для других, более знакомых с инструментом), что он работает таким образом, и документация Microsoft немного неясна и устарела (ребята хотят указать вам на документы Silverlight, которые не работают на все в универсале).
Но в любом случае, надеюсь, это кому-то поможет!