parameter - wpf visibility binding



Konverter mit Bild in Datagrid verwenden (1)

Verwenden von BooleanToVisibilityConverter Binding sollte ziemlich einfach sein:

<Image Visibility="{Binding RecordIsInvalid, 
                    Converter={StaticResource BooleanToVisibilityConverter}}" ... />

Aber soweit ich verstehe, haben Sie ein einzelnes RecordIsInvalid Flag und LineNumber die sich auf eine bestimmte Zeile beziehen. Was bindet eigentlich an jede Reihe? Hast du sowas wie ItemViewModel, die jeder Zeile entsprechen? Grundsätzlich sollte jeder Artikel verantwortlich sein, um seinen eigenen Status zu validieren und die IsValid Eigenschaft auf diese Weise aufzudecken. IsValid Dinge wären viel sauberer und einfacher, so dass Sie einfach an IsValid im Bereich jedes Grid-View- IsValid gebunden werden IsValid .

EDIT: Antwort auf Kommentar

Sie sollten den Konverter nicht selbst instanziieren und freilegen.

  • Setzen Sie eine Konverterklasse in einen geeigneten Namespace wie MyProject.GUI.Converters
  • In View.xaml fügen Sie den Namespace-Alias ​​für Converetrs hinzu, siehe * 1
  • Fügen Sie den Konverter in die Control / Window-Ressourcen in XAML ein, siehe * 2

* 1: MyView.xaml

<UserControl ...
       xmlns:Converters="clr-namespace:MyProject.GUI.Converters" />

* 2: MyView.xaml

<UserControl.Resources>
    <Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</UserControl.Resources>

Ich stolpere über diesen Datenkonverter, insbesondere in Bezug auf mehrere Zeilen und zeige / verstecke dynamisch ein Bild.

Lassen Sie uns eine Master- / Detaildatenperspektive nehmen. Bei einer bestimmten Ansicht (Präsentation) habe ich Kopfzeileninformationen und ein Datenraster, das eine Reihe von Werbebuchungen anzeigt. Vor dem Speichern der Werbebuchungen können eine oder mehrere Zeilen fehlende / ungültige Daten enthalten. Ich möchte ein Grafikbild links von der Werbebuchung anzeigen, das dem Nutzer einen visuellen Hinweis gibt, dass ... hey, diese Zeile muss korrigiert werden ...

Ich habe also eine Datentabelle in meinem ViewModel, die eine zusätzliche Spalte enthält, die anzeigt, ob Fehler mit der Zeile als Boolescher Wert verknüpft sind, da Datentypen in Datentypen nicht wissen, wie mit dem Datentyp "Visibility" von wpf verfahren werden soll. Diese Datatable.DefaultView ist die eigentliche Grundlage für die Anzeige der Daten (was funktioniert). Ich bin nur auf dieses Finale fest und das Bild wird dynamisch angezeigt.

Ich habe von Konvertern gelesen und habe eine Klasse, die nichts anderes tut als den Konverter. Also kann ich nur folgendes vorschlagen für diejenigen, die Hilfe anbieten können.

Mein ViewModel verfügt über eine Eigenschaft, die die DefaultView freigibt

public DataView MyDetailView
{ get { return MyTable.DefaultView; }}

Der Einfachheit halber hat diese Tabelle zwei Spalten.

RecordIsInvalid (boolean), 
LineItem (int)




converter