我敢肯定,我們大多數人都會同意,有可能用盡說明性DataContext
來源親本或自我上下文。然後,我們可能會訴諸綁定到父母Tag
,然後使用元素綁定。所以來源可能是這樣的:元素綁定到摺疊的用戶控件是一個馬虎,廉價的伎倆?
<Grid.Tag>
<Binding Path="MyProperty" Source="{StaticResource MySource}" />
</Grid.Tag>
當我們甚至不能做到這一點時會發生什麼?我的下一個馬虎的技巧是使用一個倒塌UserControl
元素:
<UserControl
x:Name="MySloppyControl"
DataContext="{StaticResource YetAnotherSourceInThisCrazyGrid}"
Foreground={Binding CrazyForegroundColor}
Visibility="Collapsed" />
現在我可以這樣做:
<Grid.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="{Binding CrazyForegroundColor, ElementName=MySloppyControl}" />
</Style>
</Grid.Resources>
假設我充分解釋這一點,這是倒塌UserControl
模式被誤導?
您能舉一個「用完聲明式DataContext資源」的例子嗎?我似乎無法理解這一點。 – Vlad 2010-03-03 23:26:20
讓我們忘記DataContext的「用完」,因爲你的問題意味着你從來沒有遇到過這個問題。對你而言,更有用的問題可能是'你有沒有使用XAML中的'UserControl'元素來處理任何*原因?順便說一下,這個問題是*不*詢問你是否建立了一個基於'UserControl'的自定義類型---我指的是*在你的XAML代碼中直接*寫'UserControl'。 – rasx 2010-03-04 00:13:57