Ich versuche, einen Konverter zu erstellen, der zeigt, wenn etwas Wert hat. Anderer als "Keiner", schreibe "X" in die Zelle. Ich habe also einen einfachen Elementstil erstellt:
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="{Binding Value, Converter={StaticResource SetBitConverter}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
Und Konverter ist auch einfach
public class SetBitConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var input = value as string;
switch (input)
{
case "None":
return "OK";
default:
return "X";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
Das Problem ist nun, dass der Wert beim Konvertieren nicht in den Konverter eingegeben wird. Wenn ich jedoch die Eigenschaft von Text in Hintergrund ändern, wird der Konverter problemlos eingegeben.
Antworten:
3 für die Antwort № 1Der von einem Style angewendete Wert hat immer eine niedrigere Priorität als der Wert, der direkt oder in Ihrem Fall von einer Bindung festgelegt wurde. Wenn Sie einen Konverter hinzufügen möchten, fügen Sie ihn dem hinzu Binding
Eigentum der DataGridTextColumn
oder benutze a DataGridTemplateColumn
stattdessen.
Z.B.:
<DataGridTextColumn Binding="{Binding Value, Converter={StaticResource SetBitConverter}}"/>
Hier ist ein Vergleich der automatisch generierten Standardspalte und der von oben:
Warum gibt es Vorrang für Abhängigkeitseigenschaften?
Normalerweise möchten Sie nicht immer Stileanwenden und sogar einen lokal festgelegten Wert eines einzelnen Elements verschleiern (ansonsten wäre es sehr schwierig, Stile oder Elemente im Allgemeinen zu verwenden). Daher arbeiten die Werte, die aus Stilen stammen, mit einem niedrigeren Präzedenzfall als ein lokal festgelegter Wert.
Technischer Hintergrund zur Wertigkeit
- Eigentum System Zwang
- Aktive Animationen oder Animationen mit Hold-Verhalten
- Lokaler Wert
- TemplatedParent-Vorlageneigenschaften
- Impliziter Stil
- Style löst aus
- Template-Trigger
- Style Setter
- Standardstil (Design)
- Erbe
- Standardwert aus Metadaten der Abhängigkeitseigenschaft