DataGrid erstellen von RadioButton-Spalte
Habe ich Objekte gebunden an ein DataGrid. Habe ich einen radio-button-Spalte gebunden Ist Standard-Eigenschaft des Objekts.
Wenn die app startet, bis das richtige Element angezeigt wird als Standard, aber die Bindung ist dann nicht aktualisiert. Das Verhalten möchte ich für die Nutzer ist zu überprüfen, eine radio-box und für das Objekt die default.
<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;
}
Ich habe mein Haar ziehen alle am Nachmittag an. Jede Hilfe wäre geliebt zu werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist sehr merkwürdig, aber alles, was Sie tun müssen, ist zu ändern Sie die Bindung des RadioButton:
Soweit ich weiß, ist der Standardwert LostFocus, aber es gibt einige Probleme mit der Fokus-innen DataGrid. Ich weiß nicht, warum das problem passiert.
Und ein weiteres Problem: klappen Sie das
PropertyChanged
Ereignis innerhalb der setter derIsDefault
Eigenschaft. Jetzt funktioniert alles ohne Meldungen, aber wenn Sie mehr hinzufügen xaml-code wird es schwierig heraus zu finden, warum die UI nicht aktualisiert.Einstellung
UpdateSourceTrigger=PropertyChanged
ist hier nicht genug. Sie müssen auchMode=TwoWay