2010-03-22 17 views
8

Aşağıdaki kod çalışıyor, ancak "DataContext" ile öneklenecek Yola neden ihtiyacım olduğunu merak ediyorum. Diğer çoğu durumda, kullanılan yol DataContext'e göredir. Bir RelativeSource kullanıyorum çünkü mi? Kaynak kök seviyedeyken (Pencere)?Pencerenin RelativeSource ile WPF Bağlama Yolda "DataContext" gerektirir?

<Style TargetType="TextBox"> 
     <Setter 
      Property="IsReadOnly" 
      Value="{Binding RelativeSource={RelativeSource FindAncestor, 
      AncestorType={x:Type Window}}, Path=DataContext.IsReadOnly}"/> 
    </Style>   

cevap

13

Pencerenin kendisine değil, içeren Pencerenin DataContext'e bağlanıyorsunuz. Eğer koymak mıydı:

Value="{Binding RelativeSource={RelativeSource FindAncestor, 
     AncestorType={x:Type Window}}, Path=IsReadOnly}" 

Bu Penceresinin IsReadOnly özelliği değil, kendi veri bağlam sınıfına bağlamak istiyorum. Window doesn't contain an IsReadOnly property'dan beri, bu açıkça farklı bir sınıftan geliyor (büyük olasılıkla, MVVM kullanıyorsanız, ViewModel'iniz, vb.).

+0

Anlam ifade eder. Teşekkürler. –