2012-02-15 20 views
10

Quiero usar MVVM en una aplicación donde las diferentes páginas son TabItems.Habilitar un TabItem mediante Enlace

Para esto utilizo una colección observable de mis modelos de vista (Artículos) y la ato a los controles de tabla ItemSource.

Para cada modelo de vista, he creado una plantilla de datos individual para representar el punto de vista correcto de esta manera:

<DataTemplate DataType="{x:Type baseVm:AViewModel}"> 
    <baseVw:AView /> 
</DataTemplate> 

Para mostrar el nombre correcto en el encabezamiento de la pestaña creé otra plantilla de datos que se aplicará a cada una de elementos de la tarjeta de registro:

<DataTemplate x:Key="ViewModelTabTemplate"> 
    <DockPanel> 
    <ContentPresenter Content="{Binding Path=Name}"/> 
    </DockPanel> 
</DataTemplate> 

el control de ficha se ve así:

<TabControl x:Name="myTabControl" 
      ItemsSource="{Binding Items}" 
      ItemTemplate="{DynamicResource ViewModelTabTemplate}"> 
</TabControl> 

Lo que quiero hacer ahora es habilitar/deshabilitar pestañas dentro del modelo de vista que contiene la colección. La clase base del modelo de vista contiene una propiedad de dependencia IsEnabled y me gustaría vincular esto a las vistas. Si hago esto directamente en la vista de la siguiente manera:

IsEnabled="{Binding IsEnabled, FallbackValue=true}" 

contenido de la etiqueta se desactiva cuando se enciende la propiedad IsEnabled a falso. Pero lo que realmente quiero es desactivar también la pestaña del tabulador y no solo el contenido.

¡Gracias por cualquier ayuda!

Respuesta

21

tal vez usted podría intentar algo como esto -

<TabControl> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>   
     </Style> 
    </TabControl.ItemContainerStyle> 
</TabControl> 
+0

+1 Esa es la manera de hacerlo :) – dowhilefor

+0

Muchas gracias! Eso es exactamente lo que estaba buscando. – tabina

+0

Me alegro de poder ayudar! :) – Dror

Cuestiones relacionadas