2
我有一個非常簡單的用戶控件(RatingControl)已定義了依賴項屬性如下:的Windows Phone 7的Silverlight用戶控制:數據綁定不工作的自定義屬性
public partial class RatingControl : UserControl
{
public RatingControl()
{
InitializeComponent();
}
public static readonly DependencyProperty RatingValueProperty = DependencyProperty.Register("RatingValue", typeof(double), typeof(RatingControl), new PropertyMetadata(0.0));
public double RatingValue
{
set
{
double normalizeValue = 0.0;
if (value > 10.0)
{
normalizeValue = 10.0;
}
else if (value > 0.0)
{
normalizeValue = value;
}
SetValue(RatingValueProperty, normalizeValue);
RenderRatingValue();
}
get { return (double)GetValue(RatingValueProperty); }
}
...
這種控制接收正確的RatingValue如果我直接給它分配:
<gtcontrols:RatingControl RatingValue="2.0" />
但是,如果我嘗試使用數據綁定分配給它,這是行不通的。不會調用RatingValue的「set」代碼,也不會在調試輸出窗口中看到數據綁定錯誤。 注意下面,我試圖給一個標準屬性(寬度)分配相同的值,在這種情況下,值正確地傳遞給它。
<StackPanel>
<TextBox Name="Test" Text="200.0" />
<gtcontrols:RatingControl Width="{Binding ElementName=Test, Path=Text}" RatingValue="{Binding ElementName=Test, Path=Text}" />
<TextBlock Text="{Binding ElementName=Test, Path=Text}" />
</StackPanel>
不僅TextBlock正確接收該值。另外RatingControl接收的是寬度,正確設置爲200像素;但是,RatingValue沒有設置(方法設置甚至沒有調用)
我錯過了什麼? 在此先感謝。
是的,你釘它。我終於明白了,但謝謝。 –