Je rencontre des problèmes pour obtenir une liste de radiobutton databound dans WPF pour répondre à l'entrée utilisateur et refléter les modifications apportées aux données auxquelles elle est liée (c'est-à-dire apporter des modifications au code). Le côté d'entrée de l'utilisateur fonctionne bien (c'est-à-dire que je peux sélectionner un radiobutton et la liste se comporte comme prévu). Mais chaque tentative de modification de la sélection dans le code échoue. En silence (c'est-à-dire sans exception).WPF Databound RadioButton ListBox
Voici la section pertinente du XAML (je pense):
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="{x:Type ListBoxItem}" >
<Setter Property="Margin" Value="2" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Name="theBorder" Background="Transparent">
<RadioButton Focusable="False" IsHitTestVisible="False"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" >
<ContentPresenter />
</RadioButton>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
Je lie la ListBox à une liste d'objets SchoolInfo. SchoolInfo contient une propriété appelée IsSelected:
public bool IsSelected
{
get { return isSelected; }
set
{
if(value != isSelected)
{
isSelected = value;
this.OnPropertyChanged("IsSelected");
}
}
}
Les choses OnPropertyChanged() était quelque chose que je mets dans mon cours d'expérimentation. Cela ne résout pas le problème.
Des choses comme les suivantes échouent:
((SchoolInfo) lbxSchool.Items[1]).IsSelected = true;
lbxSchool.SelectedIndex = 1;
Ils ne en silence - aucune exception est levée, mais l'interface ne montre pas l'élément sélectionné.
- Mark