DataGrid la création d'un bouton radio de la colonne
J'ai objets lié à un contrôle DataGrid. J'ai créé un bouton radio de la colonne lié à la valeur par Défaut Est la propriété de l'objet.
Lorsque l'application démarre l'élément correct est indiqué par défaut, cependant, la liaison est alors jamais mis à jour. Le comportement que je voudrais, c'est pour l'utilisateur de cocher une case d'option et pour que l'objet devient la valeur par défaut.
<DataGrid CanUserAddRows="False" AutoGenerateColumns="False" Name="TEst" >
<DataGrid.Columns >
<DataGridTextColumn Header="Value" Binding="{Binding Path=Name, Mode=OneTime}"/>
<DataGridTemplateColumn Header="Is Default">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="Test" IsChecked="{Binding IsDefault}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
private class Test : INotifyPropertyChanged
{
public string Name
{
get;
set;
}
bool isDefult;
public bool IsDefault
{
get
{
return isDefult;
}
set
{
isDefult = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public MainWindow()
{
this.InitializeComponent();
Test[] ya = new Test[] { new Test { Name = "1", IsDefault = false }, new Test { Name = "2", IsDefault = false }, new Test { Name = "3", IsDefault = true } };
this.TEst.ItemsSource = ya;
}
J'ai été en tirant mes cheveux tous les après-midi à cela. Toute aide serait aimé.
Vous devez vous connecter pour publier un commentaire.
C'est assez étrange, mais tout ce que vous avez à faire est de changer la liaison de la RadioButton:
Autant que je sache, la valeur par défaut est LostFocus, mais il y a quelques problèmes avec l'accent à l'intérieur de grille de données. Je ne sais pas pourquoi le problème se produit.
Et une autre question: augmenter le
PropertyChanged
événement à l'intérieur de l'incubateur de l'IsDefault
de la propriété. Maintenant tout fonctionne très bien sans les notifications, mais si vous ajoutez plus de code xaml, il sera dificile de savoir pourquoi l'INTERFACE utilisateur n'est pas mis à jour.Réglage
UpdateSourceTrigger=PropertyChanged
n'est pas assez ici. Vous avez également besoin d'Mode=TwoWay