如何將「myElement」的DataContext設置爲與XAML中的用戶控件相同的DataContext?我已經能夠通過代碼隱藏在UserControl構造函數中通過myElement.DataContext = this.DataContext
來完成它,但我試圖瞭解如何在XAML中執行相同的操作。WPF - 如何在邏輯樹的虛擬分支上設置DataContext?
這與創建虛擬分支到邏輯樹有關(請參閱此article)。
<UserControl ... DataContext="{Binding RelativeSource={RelativeSource self}}">
...
<TextBox Name="myTextBox">
<TextBox.Text>
<Binding Path="MySource" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<base:StringEqualsRules>
<base:StringEqualRule.BoundElement>
<base:ValidationRuleElement
x:Name="myElement"
DataContext="???"
Value="{Binding MyProperty}" />
</base:StringEqualRule.BoundElement>
</base:StringEqualsRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
...
</UserControl>
一個相關的解決方案是使用AncestorType類型用戶控件綁定(甚至他的自定義用戶控件類)。 – itowlson 2009-12-08 03:56:11
我對Josh Smith寫的這個虛擬分支技術並不熟悉,但它似乎是邏輯樹會「斷開連接」,使AncestorType無法按預期工作。 – Josh 2009-12-08 04:03:28
@Josh - 這是正確的。 FindAncestor在這種情況下不起作用,因爲myElement不是邏輯樹的一部分。 – 2009-12-08 04:26:42