2012-02-15 18 views
10

Desidero utilizzare MVVM in un'applicazione in cui le diverse pagine sono TabItems.Abilitare un oggetto TabItem tramite Binding

Per questo utilizzo una raccolta osservabile dei miei modelli di vista (elementi) e la leghiamo al controllo numerico ItemSource.

Per ogni modello di vista, ho creato un modello di dati individuali per rendere la corretta visione in questo modo:

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

Per visualizzare il nome corretto nel titolo della scheda ho creato un altro modello di dati da applicare a ciascuno di gli elementi del controllo scheda:

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

il controllo scheda aspetto:

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

Quello che voglio fare ora è abilitare/disabilitare le tabulazioni all'interno del modello di vista che contiene la raccolta. La classe base del modello di vista contiene una proprietà di dipendenza IsEnabled e vorrei associarla alle viste. Se faccio questo direttamente nella vista in questo modo:

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

contenuto della scheda viene disattivato quando accendo la proprietà IsEnabled su false. Ma quello che voglio veramente è anche disabilitare la tabpage e non solo il contenuto.

Grazie per qualsiasi aiuto!

risposta

21

Forse si potrebbe provare qualcosa di simile -

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

+1 Questo è il modo per farlo :) – dowhilefor

+0

Grazie mille! Questo è esattamente quello che stavo cercando. – tabina

+0

Contento di aver potuto aiutare! :) – Dror

Problemi correlati