Bir mülke bağlanabilirim, ancak başka bir mülkte bir mülk kullanamaz. Neden olmasın? Örneğin.WPF: Yuvalanmış bir özelliğe nasıl bağlanır?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(Not:.. Ben usta-ayrıntılarını veya bir şey yapmaya çalışmıyorum Hem özellikler standart CLR özellikleridir)
Güncelleme: sorun benim ParentProperty XAML olmanın bir nesneye bağlı olduğunu oldu başlatıldı. Ne yazık ki bu nesne, daha sonra XAML dosyasında Bağlama, daha sonra tanımlandı, bu nedenle, ParentProperty tarafından Bağlama tarafından okunduğunda nesne null oldu. düzeni berbat olur XAML dosyasını yeniden düzenleyerek beri, düşünebildiğim tek çözüm kod arkada içinde Bağlama tanımlamak oldu:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
Evet, bunun sebebi gibi görünüyor. ParentProperty salt okunurdur, ancak XAML'de başlatılan belirli bir denetime bağlıdır. Bu nesne, Bağlamadan Sonra .xaml dosyasında tanımlanmıştır, böylece ParentProperty çağrıldığında, NullReferenceException attı. Fark etmedim çünkü WPF onu yuttu. Çıkış penceresini kontrol etmeliydim! – Qwertie
Artık yeni bir yap-bozum var - düzeni hizalamadan XAML'deki nesneleri doğru sırayla nasıl tanımlayabilirsiniz. – Qwertie
Ya da bir şekilde, önce özelliği okur önce Pencere tamamen başlatılıncaya kadar bekle bekleyebilir miyim? {Binding ElementName = xyz, ...} kullandığımda, xyz daha sonra XAML dosyasında tanımlanmış olsa bile çalışır. Garip o zaman (xyz elementini kullanan) ParentProperty, xyz'nin daha sonra XAML dosyasında tanımlandığından dolayı çalışmaz. – Qwertie