System konwencji Caliburn jest skonfigurowany tylko dla formantów WPF, które są gotowe do użycia. Kiedy widzi RabTabControl, nie rozpoznaje go, więc przeszukał hierarchię klas szukając czegoś, co rozpoznaje. W tym przypadku prawdopodobnie pasuje do Selectora lub ItemsControl. Właśnie dlatego istnieje częściowe stosowanie konwencji. Aby uzyskać dokładnie to, czego potrzebujesz, musisz dodać konwencję do aplikacji ConventionManager dla RadTabControl, która wykonuje dokładnie to, co chcesz. Oto jak konwencja TabControl jest zdefiniowana:
AddElementConvention<TabControl>(TabControl.ItemsSourceProperty, "ItemsSource", "SelectionChanged")
.ApplyBinding = (viewModelType, path, property, element, convention) => {
if(!SetBinding(viewModelType, path, property, element, convention))
return;
var tabControl = (TabControl)element;
if(tabControl.ContentTemplate == null && tabControl.ContentTemplateSelector == null && property.PropertyType.IsGenericType) {
var itemType = property.PropertyType.GetGenericArguments().First();
if(!itemType.IsValueType && !typeof(string).IsAssignableFrom(itemType))
tabControl.ContentTemplate = DefaultItemTemplate;
}
ConfigureSelectedItem(element, Selector.SelectedItemProperty, viewModelType, path);
if(string.IsNullOrEmpty(tabControl.DisplayMemberPath))
ApplyHeaderTemplate(tabControl, TabControl.ItemTemplateProperty, viewModelType);
};
Myślę, że powinieneś być w stanie podjąć kod iz kilkoma niewielkimi modyfikacjami, sprawiają, że to, co chcesz. Zauważ, że niektóre metody wywoływane w powyższym kodzie faktycznie istnieją w menedżerze konwencji ConventionManager, więc będziesz musiał to naprawić. Powinieneś dodać swoją konwencję do nadpisania Konfiguracji Bootstrappera. Aby uzyskać dodatkową próbkę tego, spójrz na Bootstrapper szablonu WP7, który definiuje niestandardowe konwencje dla Pivot i Panarama.
To załatwiło sprawę. Dziękuję Ci bardzo. – Dan