У меня есть следующее созвездие в моем XAML:
<ListBox x:Uid="attributesListBox"
DataContext="{Binding Source={StaticResource EditFeatureWithForeignKeyAttributesViewModel}}" ItemsSource="{Binding Path=Attributes}"
d:DataContext="{d:DesignData /SampleData/BlendableAttributesSampleData.xaml}">
</ListBox>
Следующий DataTemplate применяется через DataType:
<DataTemplate x:Uid="dataColumnFeatureAttributeDataTemplate" DataType="{x:Type DataColumnFeatureAttribute}">
<!-- ... opens a button and a grid ... -->
<TextBlock Text="{Binding EditCaption}" />
<!-- ... closes button and grid ... -->
</DataTemplate>
Как объяснено здесь вВ разделе «Примечания» x: Key генерируется неявно, и «DataTemplate автоматически применяется к объектам данных этого типа».
Внутри DataTemplate связаны несколько простых свойств элемента списка.В этом отрывке из моего SampleData вы найдете свойство EditCaption, упомянутое выше - это простая строка, и DataContext и ItemsSource ListBox должны соответствовать:
<SampleData:BlendableAttributes xmlns:SampleData="clr-namespace:Commons.Mobile.SampleData">
<SampleData:BlendableAttributes.Attributes>
<Mobile_Client:FeatureAttribute DisplayCaption="Vestibulum adipiscing curabitur" DisplayString="Class maecenas parturient" ErrorMessage="Nunc amet aliquam nam sed" EditCaption="Cras phasellus duis" IsEditable="True" IsSearchable="False" IsViewable="True" Modified="False">
<Mobile_Client:FeatureAttribute.Feature>
<!-- ... Feature with a lot of properties ... -->
</Mobile_Client:FeatureAttribute.Feature>
</Mobile_Client:FeatureAttribute>
<!-- ... more FeatureAttributes ... -->
</SampleData:BlendableAttributes.Attributes>
</SampleData:BlendableAttributes>
DataTemplate правильно применяется в предварительном просмотре,если я ссылаюсь на это через x: Key.В этом случае это невозможно, поскольку список содержит объекты разных типов, поэтому мне нужно использовать неявный x: Key для применения определенного DataTemplate в соответствии с типом объекта.
Таким образом, во время выполнения проблем не возникаетс данными из моей виртуальной машины, но во время разработки
- Expression Blend показывает SampleData, но без применения DataTemplate при просмотре всей страницы
- С другой стороны, когдаЯ захожу в Ресурсы и редактирую DataTemplate, вижу макет без SampleData.
Я кое-что опробовал и искал решение на форуме, но, похоже, никто не имел этогоособое созвездие.Может кто-нибудь помочь мне, пожалуйста?