1

私は私のUserControl

<UserControl x:Class="CustomCtrl.MyButton">
   <Button x:Name="Btn" />
</UserControl>

そして、私は私UserControlのものをWindow

<Window>
    <Grid>
        <MyButton Background="Aqua" />
    </Grid>
</Window>

my with XAMLのプロパティを使用してBackground、 Buttonのプロパティを変更したいと考えています。BtnBackgroundUserControl

Backgroundプロパティを追加してみました

public class MyButton: UserControl
{
    public new Brush Background
    {
        get
        { return Btn.GetValue(BackgroundProperty) as Brush; }

        set
        { Btn.SetValue(BackgroundProperty, value); }
    }        
}

しかし、それは効果がありません。
代わりにコードを使用するとMyButtonControl.Background = Brushes.Aqua;、機能します。
なんで?この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

カスタム コントロールでUserControl.Backgroundはなく、このプロパティの使用方法を制御することはできませんUserControls1 つのコントロールだけの背景を変更する場合は、新しい依存関係プロパティを公開して、Button.Background.

于 2012-09-01T14:06:08.877 に答える
0

私が見たように、あなたには2つの選択肢があります:

  1. 簡単な方法は、次のように「Btn」背景を透明に設定するだけです。

    <UserControl x:Class="CustomCtrl.MyButton">
          <Button x:Name="Btn" Background="Transparent"/>
    </UserControl>
    
  2. もう 1 つの方法は、ボタンの背景色をコントロールの背景色にバインドすることです。

    <UserControl x:Class="CustomCtrl.MyButton" x:Name="control">
          <Button x:Name="Btn" Background="{Binding Background, ElementName=control}"/>
    </UserControl>
    

両方をテストし、動作しているようです。

于 2012-09-01T10:57:46.320 に答える
0

<Window>
    <Grid>
        <MyButton Background="Aqua" />
    </Grid>
</Window>

の背景色を設定していますUserControl。の背景色を設定するにButtonは、

<UserControl x:Class="CustomCtrl.MyButton">
   <Button x:Name="Btn" Background="Aqua" />
</UserControl>

編集 (OP コメントの後): を変更することはできませんUserControl.Backgroundが、新しいプロパティは機能します。

public Brush ButtonBackground {
    get {
        return this.Btn.Background;
    }
    set {
        this.Btn.Background = value;
    }
}

その後:

<Window>
    <Grid>
        <MyButton ButtonBackground="Aqua" />
    </Grid>
</Window>
于 2012-09-01T10:58:30.923 に答える