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?
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:
Und in Ihrem Selektor (Pseudocode, offensichtlich):
%Vor%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%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%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.
'
Tags und Links wpf c# datatemplate default