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"コードは呼び出されず、デバッグ出力ウィンドウにデータバインディングエラーが表示されません。 以下では、標準のプロパティ(Width)に同じ値を割り当てようとしましたが、その場合は値が適切に渡されます。
<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は設定されていません(メソッドセットは呼び出されていません)
私は何が欠けていますか? ありがとうございます。
をうん、あなたはそれを釘付け。私は最終的にそれを理解しましたが、ありがとう。 –