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没有设置(方法设置甚至没有调用)
我错过了什么? 在此先感谢。
是的,你钉它。我终于明白了,但谢谢。 –