0

ユーザーコントロールを作成し、次のような新しいプロパティを追加しました。

public partial class MyControl : UserControl
{
    public static readonly DependencyProperty SelectedBrushProperty;
    static MyControl() {
        SelectedBrushProperty = DependencyProperty.Register("SelectedBrush",
                                                            typeof(Brush),
                                                            typeof(MyControl),
                                                            new PropertyMetadata(Brushes.AliceBlue));
    }

    public Brush SelectedBrush {
        get {
            return (Brush)GetValue(SelectedBrushProperty);
        }
        set {
            SetValue(SelectedBrushProperty,value);
        }
    }
    public MyControl()
    {
        InitializeComponent();
    }
}

私の質問は次のとおりです。カスタムコントロールのXAMLにある場合、どのように使用できますか?

4

1 に答える 1

2

コントロールのXAMLのプロパティにバインドできます。

<UserControl x:Class="MyNamespace.MyControl" ...>
    <Grid>
        <Label Background="{Binding SelectedBrush,
            RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/>
    </Grid>
</UserControl>

DataContext = this;MyControlのコンストラクターで設定した場合RelativeSource、バインディングのを省略できます。

<Label Background="{Binding SelectedBrush}"/>

静的コンストラクターは必要ないことに注意してください。あなたはこれを書くことができます:

public static readonly DependencyProperty SelectedBrushProperty =
    DependencyProperty.Register("SelectedBrush", typeof(Brush), typeof(MyControl),
                                new PropertyMetadata(Brushes.AliceBlue));
于 2013-02-16T18:04:28.503 に答える