WPF datagrid: deaktivieren der Bearbeitung in bestimmten Zeilen
Ich habe so etwas wie Tabelle Bestellungen gebunden DataGrid
.
Ich deaktivieren möchten, Bearbeiten von Zeilen, wo um Datum abgelaufen (Stichtag > Aktuelles Datum): zeigen Sie, Grau und Verbot der Eingabe in den edit-Modus.
Hier ist was ich habe:
<Style TargetType="{x:Type WPFToolkit:DataGridRow}">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<!-- ??? order_date > current_date -->
<!-- some other condition - already works -->
</MultiTrigger.Conditions>
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="Foreground" Value="LightGray"/>
</MultiTrigger>
</Style.Triggers>
</Style>
Dem Datum der Bestellung ist eine template-Spalte wie folgt definiert:
<WPFToolkit:DataGridTemplateColumn SortMemberPath="order_date" Header="Deadline" >
<WPFToolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=order_date,
ConverterCulture='ru-RU', StringFormat='{}{0:d}'}" />
</DataTemplate>
</WPFToolkit:DataGridTemplateColumn.CellTemplate>
<WPFToolkit:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<WPFToolkit:DatePicker SelectedDate="{Binding Path=order_date}" />
</DataTemplate>
</WPFToolkit:DataGridTemplateColumn.CellEditingTemplate>
</WPFToolkit:DataGridTemplateColumn>
Gibt es eine Möglichkeit zum deaktivieren der Bearbeitung-Modus in den Zeilen, wo, um das Datum abgelaufen ist?
- Verwandte: stackoverflow.com/questions/2030143/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
So scheint es, dass alles funktioniert, aber Sie brauchen einen Weg, um zu überprüfen (order_date > current_date) in einem Trigger? Wenn das der Fall ist, könnten Sie schreiben ein ValueConverter, wie vielleicht DateExpiredConverter und überprüfen Sie den Zustand dort und geben einen booleschen Wert zurück.
Die converter-Klasse könnte wie folgt Aussehen:
Dann in Ihr auslösen, Sie tun so etwas wie dieses:
Habe ich noch nicht getestet mit diesem code, aber es sollte ziemlich in der Nähe, was Sie brauchen.