В Silverlight 2 я использую usercontrol, который наследует datacontext страницы, на которой он встроен. Этот файл данных содержит текст вопроса, тип вопроса и набор ответов. В пользовательском элементе управления находится список, связанный с набором ответов. Как показано ниже:
<ListBox DataContext="{Binding}" x:Name="AnswerListBox" ItemContainerStyle="{StaticResource QuestionStyle}" Grid.Row="1" Width="Auto" Grid.Column="2" ItemsSource="{Binding Path=AnswerList}" BorderBrush="{x:Null}" />
В этом списке есть связанный стиль для отображения ответов в виде переключателей или флажков (которые я хотел бы скрыть или показать в зависимости от типа вопроса) как:
<Style TargetType="ListBoxItem" x:Key="QuestionStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<StackPanel Background="Transparent" >
<RadioButton Visibility="{Binding Path=QuestionType, Converter={StaticResource QuestionTypeConverter}, ConverterParameter='RadioButtonStyle'}" Height="auto" Margin="0,0,0,10" IsChecked="{TemplateBinding IsSelected}" IsHitTestVisible="False" Content="{Binding Path=AnswerText}">
</RadioButton>
<CheckBox Visibility="{Binding Path=QuestionType, Converter={StaticResource QuestionTypeConverter}, ConverterParameter='CheckBoxStyle'}" Height="auto" Margin="0,0,0,10" Content="{Binding Path=AnswerText}">
</CheckBox>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Итак, мой вопрос заключается в следующем: как вы обращаетесь к родительскому контенту данных, чтобы получить QuestionType (поскольку это свойство в самом пользовательском элементе управления datacontext, а не в свойстве AnswerItem в ListList)?
Альтернативно существует ли лучший способ динамического переключения стилей в xaml на основе значения привязки?