ho legato con successo una colonna in un DataGrid a una raccolta osservabile con gli oggetti che implementa l'interfaccia INotifyPropertyChanged:INotifyPropertyChanged Associazione a DataTemplate in GridColumn
Questo è il codice XAML:
<dxg:GridColumn Name="Name" FieldName="Stapel" DisplayMemberBinding="{Binding Path=Name}" />
e la proprietà nel classe di oggetti:
public string Name
{
get { return _name; }
set
{
if (value == _name) return;
_name = value;
OnPropertyChanged("Name");
}
}
Ma in un'altra colonna sto usando un modello:
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Rectangle Height="19" Width="19" Fill="{Binding Path=Data.StatusColor}"></Rectangle>
</StackPanel>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
La proprietà Fill del rettangolo è legato ad una proprietà "calcolata":
public SolidColorBrush StatusColor
{
get
{
if (StapelStatus == StapelStatus.Neu)
{
return new SolidColorBrush(Colors.CornflowerBlue);
}
return new SolidColorBrush(Colors.DarkOrange);
}
}
Alcuni altri setter di proprietà, che cambiano il valore di StapelStatus
chiedono
OnPropertyChanged("StatusColor");
ho pensato questo sarebbe sufficiente per cambiare anche il colore nel colore del rettangolo nella colonna della griglia. Ma sfortunatamente quando il StapelStatus
viene modificato e OnPropertyChanged("StatusColor")
viene chiamato la griglia non riflette questa modifica. Immagino di dover cambiare in qualche modo il binding nello DataTemplate
. Qualcuno può darmi un consiglio?
Perché devi 'Data.' nel percorso del legame StatusColor? – Jay
Per essere sincero, non ho idea del perché. Ho trovato questo in un esempio funzionante. Se rimuovo i dati. il valore non apparirà affatto nel DataTemplate. –
Sei sicuro che DataContext per DataTemplate sia corretto? Le proprietà Name e StatusColor della stessa classe? – snurre