En Silverlight 2 estoy usando un control de usuario que hereda el contexto de datos de la página en la que está incrustado. Este contexto de datos contiene texto de pregunta, un tipo de pregunta y una colección de respuestas. En el control del usuario hay un cuadro de lista que está vinculado a la colección de respuestas. Como se muestra a continuación:Acceda al contexto de datos principal en el cuadro de lista en Silverlight
<ListBox DataContext="{Binding}" x:Name="AnswerListBox" ItemContainerStyle="{StaticResource QuestionStyle}" Grid.Row="1" Width="Auto" Grid.Column="2" ItemsSource="{Binding Path=AnswerList}" BorderBrush="{x:Null}" />
Este cuadro de lista tiene un estilo asociado para mostrar las respuestas en forma de botones de opción o casillas de verificación (que me gustaría ocultar o mostrar en función del tipo de pregunta) como:
<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>
Así que mi pregunta es: ¿cómo accedes al contexto de datos padre para obtener QuestionType (ya que esta es una propiedad en el control de datos del mismo contexto, no una propiedad en un AnswerItem en la AnswerList)?
Alternativamente, ¿existe una mejor manera de cambiar estilos dinámicamente en el xaml en función de un valor de enlace?
¿Tiene alguna forma de cambiar su respuesta aceptada? El siguiente, por Roboblob, es una respuesta correcta. La respuesta aceptada es incorrecta para Silverlight y engañosa. –