我創建用戶控制,這是我要綁定的屬性的代碼是:一個綁定到用戶的控制工程,第二個沒有
public Color Value
{
get
{
return (Color)this.GetValue(this.ValueProperty);
}
set
{
this.SetValue(this.ValueProperty, value);
}
}
public readonly DependencyProperty ValueProperty =
DependencyProperty.Register("Value", typeof(Color),
typeof(ColorSlider), new PropertyMetadata(Colors.Red))
我有這個控制在我的頁面的兩個實例:
<local:ColorSlider x:Name="ColorsSlider1" />
<!--...-->
<local:ColorSlider x:Name="ColorsSlider3" />
並控制與價值,我要綁定(從ColorSlider
到Canvas
和TextBlock
):
<Canvas x:Name="TileCanvas" Grid.Column="0" Margin="30" Width="173" Height="173"
Background="{Binding Value, ElementName=ColorsSlider1, Converter={StaticResource ColorToSolidBrushConverter}}">
<TextBlock x:Name="TileText" Text="dsdfsdfsf"
Foreground="{Binding Value, ElementName=ColorsSlider3, Converter={StaticResource ColorToSolidBrushConverter}}"/>
</Canvas>
所以這裏是問題所在。綁定到Canvas
的作品,但綁定到TextBlock
不!有趣的是,如果我刪除ColorSlider3
綁定到TextBlock
將工作!如果我將綁定設置爲ColorSlider3
,綁定將更新TextBlock
背景。
因此,我似乎只能綁定一個UserControl
的最新實例的值。爲什麼會出現這種情況,我該如何解決?
就是這樣!現在它完美地工作。你能簡要解釋一下DependencyProperty是靜態的時候會發生什麼變化嗎?爲什麼它現在正在工作,但是當它是非靜態的時候它不起作用? – Andrzej 2012-07-07 14:48:58
順便說一下,Visual Studio包含了「propdp」片段,可以幫助您編寫自定義的依賴項屬性。 – NestorArturo 2012-07-08 14:04:20