El sistema de convenciones de Caliburn solo está configurado para controles WPF que están listos para usar. Cuando ve el RabTabControl, no lo reconoce, por lo que buscó en su jerarquía de clases buscando algo que reconozca. En este caso, probablemente coincida con Selector o ItemsControl. Esta es la razón por la cual hay una aplicación parcial de las convenciones. Para obtener exactamente lo que desea, debe agregar una convención al ConventionManager para RadTabControl que haga exactamente lo que desea. Aquí es cómo se define la convención TabControl:
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);
};
Creo que debería ser capaz de tomar el código y con algunas modificaciones menores, que haga lo que usted quiere. Tenga en cuenta que algunos de los métodos invocados en el código anterior realmente existen en el ConventionManager, por lo que deberá corregirlos. Debe agregar su convención en la anulación de configuración de Bootstrapper. Para obtener una muestra adicional de esto, eche un vistazo al Bootstrapper de la plantilla WP7, que define convenciones personalizadas para Pivot y Panarama.
Esto hizo el truco. Muchas gracias. – Dan