2012-02-15 16 views
10

Farklı sayfaların TabItems olduğu bir uygulamada MVVM kullanmak istiyorum.Bağlama yoluyla TabItem'i etkinleştirme

Bunun için benim görünüm modellerimin (Öğeler) gözlenebilir bir koleksiyonunu kullanın ve bunu ItemSource tabcontrols öğesine bağlayın. her birine uygulanacak

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

ben başka bir veri şablonu oluşturduk sekmesinin başlığında doğru adı görüntülemek için: Her görünüm modeli için

, böyle doğru bir görünümünü oluşturmak için tek tek veri şablon oluşturdu sekme denetiminin elemanlar:

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

sekme denetimi şuna benzer:

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

Şimdi yapmak istediğim, koleksiyonları içeren görünüm modelindeki sekmeleri etkinleştirmek/devre dışı bırakmak. Görünüm modelinin temel sınıfı bir bağımlılık özelliği olan IsEnabled'ı içerir ve bunu bu görünümlere bağlamak isterim. Ben doğrudan böyle görünümünde Bunu yaparsanız: Ben false IsEnabled özelliğini açtığınızda

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

sekme sayfanın içeriği devre dışı bırakıldığı. Ancak, gerçekten istediğim, yalnızca sayfanın sekmesini değil, yalnızca içeriği de devre dışı bırakmak.

Yardımlarınız için teşekkürler!

cevap

21

Belki böyle bir şey deneyebilirsiniz -

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

+1 yolunun bu bunu yapmak için :) – dowhilefor

+0

Çok teşekkür ederim! Tam olarak aradığım şey bu. – tabina

+0

Sevindim Yardımcı olabilirim! :) – Dror

İlgili konular