Geben Sie einen leeren Standard-DataTemplate anstelle des default 'ToString()' DataTemplate
Den Standard-DataTemplate in einer wpf-Anwendung zeigt das Ergebnis der .ToString()
Methode. Ich entwickle eine Anwendung, wo die Standard-DataTemplate sollte nichts anzeigen.
Ich versucht habe:
<Grid.Resources>
<DataTemplate DataType="{x:Type System:Object}">
<Grid></Grid>
</DataTemplate>
</Grid.Resources>
Aber das funktioniert nicht. Wer weiß, ob dies möglich ist, ohne specifiing eine bestimmte DataTemplate für jede Klasse geben, in der Anwendung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kenne ich keinen Weg, dies zu tun. Als pro Joe ' s Kommentar unten, WPF speziell verbietet die Angabe eines
DataTemplate
für TypObject
.Je nach Ihren genauen Anforderungen, kann es einfacher sein, die Suche nach einem
DataTemplate
entspricht dem spezifischen Typ. Wenn Sie eine finden, verwenden Sie es. Andernfalls wird nichts angezeigt. Zum Beispiel:Und in Ihrem Selektor (pseudo-code, natürlich):
Wenn Sie mit dem MVVM-Muster und eine abstrakte Klasse, die alle Ihre ViewModel-Klassen ableiten soll, können Sie, dass die Klasse anstelle von System.Objekt:
Ich verwendet, die null-Werte zulässt, arbeitete für meine situation.
Ich bin mir nicht sicher über das ersetzen der Standard-DataTemplate, Sie können jedoch einen ValueConverter übergeben display ToString in dem Fall bestimmter Arten und andernfalls eine leere Zeichenfolge. Hier finden Sie den code (beachten Sie, dass die typeb textblock nicht den Konverter auf ihm zu zeigen, was es sieht aus wie normalerweise):
.xaml:
.xaml.cs:
Hier ein funktionierendes Beispiel, wie Sie dies über einen Selektor (am besten IMO):
Entdeckte ich etwas versehentlich. Ich war mit einer benutzerdefinierten Abhängigkeitseigenschaft Datacontext auf ein Benutzersteuerelement, das hatte ein contentcontrol mit Datatemplates basierend auf Typen(Entitäten in meinem Fall). Da hatte ich verschiedene Arten von Entitäten, die meine benutzerdefinierte Abhängigkeitseigenschaft war
War dies das Gerät, die ich verwendet, um zu binden, an den datacontext des ContentControl.
Wie folgt verwendet:
Ich entdeckte, konnte ich es auch so nutzen:
Und die contextcontrol drucken würde etwas text als Kontext.
arbeitet für eine völlig leere Kontext.
`