Geben Sie eine leere DataTemplate-Vorgabe anstelle der standardmäßigen Datenvorlage "ToString ()" an

9

Das Standard-DataTemplate in einer wpf-Anwendung zeigt das Ergebnis der Methode .ToString() an. Ich entwickle eine Anwendung, bei der das Standard-DataTemplate nichts anzeigen soll.

Ich habe es versucht:

%Vor%

Aber das funktioniert nicht. Weiß jemand, ob dies möglich ist, ohne ein spezifisches DataTemplate für jede Klassenart in der Anwendung anzugeben?

    
J W 02.04.2009, 14:03
quelle

6 Antworten

4
Ich kenne keine Möglichkeit, das zu tun. Gemäß dem Kommentar von Joe unten erlaubt WPF ausdrücklich nicht, ein DataTemplate für den Typ Object anzugeben.

Abhängig von Ihren genauen Anforderungen kann es einfacher sein, nach einem DataTemplate zu suchen, das dem bestimmten Typ entspricht. Wenn Sie einen finden, verwenden Sie ihn. Ansonsten nichts anzeigen. Zum Beispiel:

%Vor%

Und in Ihrem Selektor (Pseudocode, offensichtlich):

%Vor%     
Kent Boogaart 02.04.2009, 16:24
quelle
4

Wenn Sie das MVVM-Muster verwenden und über eine abstrakte Klasse verfügen, von der alle ViewModel-Klassen abgeleitet sind, können Sie diese Klasse anstelle von System.Object verwenden:

%Vor%     
Greg Sansom 14.03.2011 04:21
quelle
2

Ich habe Nullable verwendet, arbeitete für meine Situation.

%Vor%     
Forss 23.07.2015 12:43
quelle
1

Ich bin mir nicht sicher, ob ich das Standard-DataTemplate ersetzen soll, aber Sie können einen ValueConverter verwenden, um DisplayToString bei bestimmten Typen und ansonsten eine leere Zeichenfolge zu übergeben. Hier ist ein Code (beachten Sie, dass der typeB-Textblock nicht über den Konverter verfügt, um zu zeigen, wie er normalerweise aussieht):

.xaml:

%Vor%

.xaml.cs:

%Vor%     
Mark Synowiec 03.04.2009 23:56
quelle
0

Hier ein Arbeitsbeispiel, wie man dies mit einem Selektor macht (der beste Weg IMO):

%Vor%     
Snicker 19.08.2017 16:11
quelle
0

Ich habe etwas versehentlich entdeckt. Ich verwendete eine benutzerdefinierte Abhängigkeitseigenschaft, um den Datacontext für ein Benutzersteuerelement festzulegen, das eine Inhaltssteuerung mit Datatemplates basierend auf Typen (Entitäten in meinem Fall) hatte. Da ich verschiedene Arten von Entitäten hatte, war meine benutzerdefinierte Abhängigkeitseigenschaft

%Vor%

Dies war das Gerät, das ich an den Datenkontext des ContentControls gebunden habe.

%Vor%

Verwendet wie folgt:

%Vor%

Ich entdeckte, dass ich es auch so benutzen könnte:

%Vor%

Und die Kontextsteuerung würde einen Text als Kontext ausgeben.

%Vor%

funktioniert für einen völlig leeren Kontext.

'

    
Jon 29.03.2018 13:33
quelle

Tags und Links