Ich hoffe, es geht euch allen gut.
Ich verwende Caliburn.Micro mit Teleriks WPF-Steuerelementen, um eine Schnittstelle mit Registerkarten zu erstellen. Mit RadTabControl habe ich den folgenden Code;
%Vor%Die Registerkarte hat den richtigen Header, aber der Inhalt liest "... / MyViewModel" (Ellipsen ersetzen den vollständigen Pfad) anstelle des Bildschirms, der angezeigt werden soll.
Wenn ich <telerik:RadTabControl...
durch <TabControl...
ersetze, funktioniert alles wie beabsichtigt.
Was vermisse ich?
Das Caliburn-Konventionen-System ist nur für WPF-Steuerelemente konfiguriert, die sofort einsatzbereit sind. Wenn es das RabTabControl sieht, erkennt es es nicht, also suchte es seine Klassenhierarchie nach etwas, das es erkennt. In diesem Fall stimmt es wahrscheinlich mit Selector oder ItemsControl überein. Aus diesem Grund werden Konventionen teilweise angewendet. Um genau das zu bekommen, was Sie wollen, müssen Sie dem ConventionManager für RadTabControl eine Konvention hinzufügen, die genau das macht, was Sie wollen. Hier ist, wie die TabControl-Konvention definiert ist:
%Vor%Ich denke, Sie sollten in der Lage sein, den Code zu nehmen und mit ein paar kleinen Änderungen das zu tun, was Sie wollen. Beachten Sie, dass einige der im obigen Code genannten Methoden tatsächlich im ConventionManager vorhanden sind. Daher müssen Sie dies beheben. Sie sollten Ihre Konvention in der Override-Konfiguration des Bootstrappers hinzufügen. Für ein weiteres Beispiel schauen Sie sich den Bootstrapper der WP7-Vorlage an, der benutzerdefinierte Konventionen für Pivot und Panarama definiert.
Caliburn.Micro.Telerik enthält Konventionen für Teleriks WPF-Steuerelemente sowie einige andere Telerik + WPF-spezifische Dinge wie eine IWindowManager-Implementierung und zwei Anwendungen mit Beispielen.
Sie können den Quellcode oder Nuget-Paket .
Die Konvention für RadTabControl sieht folgendermaßen aus:
%Vor%Hoffe, das hilft ...
Tags und Links wpf c# xaml caliburn.micro telerik