我可以綁定到一個屬性,但不是另一個屬性內的屬性。爲什麼不?例如WPF:如何綁定到嵌套的屬性?
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"...>
...
<!--Doesn't work-->
<TextBox Text="{Binding Path=ParentProperty.ChildProperty,Mode=TwoWay}"
Width="30"/>
(注意:我並不想這樣做主的細節或任何這兩個屬性是標準的CLR屬性)
更新:這個問題是我的ParentProperty在XAML是依賴的對象上初始化。不幸的是,該對象稍後在XAML文件中定義的比綁定,所以當我的ParentProperty被綁定讀取時,該對象爲null。由於重新排列XAML文件會搞砸了佈局,我能想到的唯一的解決辦法是定義在後臺代碼綁定:
<TextBox x:Name="txt" Width="30"/>
// after calling InitializeComponent()
txt.SetBinding(TextBox.TextProperty, "ParentProperty.ChildProperty");
是的,這似乎是原因。 ParentProperty是隻讀的,但它取決於正在初始化的XAML中的某個控件。這個對象是在綁定後的.xaml文件中定義的,所以當調用ParentProperty時,它拋出了NullReferenceException。我沒有注意到,因爲WPF吞下了它。我應該檢查輸出窗口! – Qwertie 2009-06-10 22:53:09
現在我有一個新的難題 - 如何在XAML中以正確的順序定義對象而不會弄亂佈局。 – Qwertie 2009-06-10 22:54:54