Для школьного проекта мне нужен выборочный шаблон для объекта вопроса. В зависимости от его типа я должен показать другой тип (типы: открытый, множественный выбор и закрытые)Условный DataTemplate возвращает объект
Я определил шаблон как следует
<ResourceDictionary>
<UserControl.Resources>
<DataTemplate x:Key="Open" >
<WrapPanel>
<Label Content="Open"/>
</WrapPanel>
</DataTemplate>
<DataTemplate x:Key="multipleChoice" >
<WrapPanel>
<Label Content="multipleChoice"/>
</WrapPanel>
</DataTemplate>
<DataTemplate x:Key="Closed" >
<WrapPanel>
<Label Content="Closed"/>
</WrapPanel>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
Как вы можете видеть его сейчас просто содержит тестовый ярлык. Для показа я использую ItemsControl
с сеттерами. Основываясь на другом примере, показанном здесь в StackOverflow. Однако этот пример возвращает мне System.Data.Entity.DynamicProxies
, и я не знаю почему. Прокомментированный код работает так, что свойства доступны.
<ItemsControl ItemsSource="{Binding SelectedInspection.Questionaire.Questions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<DataTrigger Binding="{Binding type}" Value="Open">
<Setter Property="ContentTemplate"
Value="{StaticResource Open}" />
</DataTrigger>
<DataTrigger Binding="{Binding type}" Value="multipleChoice">
<Setter Property="ContentTemplate"
Value="{StaticResource multipleChoice}" />
</DataTrigger>
<DataTrigger Binding="{Binding type}" Value="Closed">
<Setter Property="ContentTemplate"
Value="{StaticResource Closed}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
<!--
<DataTemplate>
<WrapPanel>
<Label Content="{Binding Path=QuestionContent}" />
</WrapPanel>
</DataTemplate>
-->
</ItemsControl.ItemTemplate>
</ItemsControl>
Я привязка к моей модели вопроса, который выглядит как этот
public class Question
{
public Question()
{
this.Answers = new ObservableCollection<Answer>();
}
[Key]
public virtual int Id { get; set; }
public String QuestionContent { get; set; }
public string OpenAnswer { get; set; }
public string type { get; set; }
public virtual ObservableCollection<Answer> Answers { get; set; }
public virtual Questionaire Questionaire { get; set; } }
}
Am я что-то не так? Как я могу это исправить?
Обновление: Решено. Данный пример работает правильно. Данные из базы данных были неверными, которые вызывают ошибку.
Можете ли вы [изменить] ваш вопрос, чтобы включить код для объекта данных, к которому вы привязываетесь? – Rachel
Я подозреваю, что проблема связана с вашим DataContext, поскольку 'System.Data.Entity.DynamicProxies' звучит так, как будто это часть Entity Framework, а не пользовательский элемент управления, который вы создали. – Rachel
Правильно, вопросы задаются сущностью. но как это проблема? и что еще важнее, как я могу обойти это? – IMarks