ここでは非常に基本的なものがないと思います。データバインドされたプロパティを持つオブジェクトをリフレッシュする
私はそのように定義DependencyProperty
とUserControl
、作成しました:
public static DependencyProperty SpinnerColourProperty = DependencyProperty.Register("SpinnerColour", typeof(Color), typeof(LoadingControl), new PropertyMetadata(Colors.Black));
public Color SpinnerColour
{
get
{
return (Color)GetValue(SpinnerColourProperty);
}
set
{
SetColour(value);
SetValue(SpinnerColourProperty, value);
}
}
(はい、私は...英国英語を好むので、私を訴える:P)
SetColour
方法を、コントロールがどのように見えるかが予想どおりに変更されます。
私のコードでは、customControl1.SpinnerColour = Colors.Red
と書くと、コントロールはプロパティと視覚効果の両方のカラーをセッターで正しく変更します。 (私はVisual Studioのデザイナーでプロパティを使いこなせばこの変更を見ることもできます)
ただし、そのプロパティにデータバインディングを適用し、それがバインドされている要素を変更すると、そのプロパティの値はセッターは決して呼び出されず、実際の表示は決して変更されません。私はボタンと私のコントロールを定義する場合
だから、たとえば、:私はチェックすると次に
private void button1_Click(object sender, RoutedEventArgs e)
{
button1.Background = new SolidColorBrush(Colors.Red);
}
:
<my:MyControl x:Name="myControl1" SpinnerColour="{Binding ElementName=button1, Path=Background.Color, Mode=TwoWay}" />
<Button Content="Button" Height="23" Name="button1" Click="button1_Click" />
そしてClick
イベントは、次のようなボタンの背景の色を変更しますSpinnerColour
デバッガを使用しているプロパティは、赤色になります。しかし、私が書いたように、セッターは決して呼び出されず、実際のコントロールは決して色を変えません。
私は間違っていますか?
私は知っています**私はいくつかの基本原則を間違っています。 >。<助けてくれてありがとう! :) – Shaamaan