1

アプリケーションのさまざまなボタンに再利用できる UserControl を作成したいと思います。XAML を介して UserControls にパラメーターを渡す方法はありますか? 私のアプリのボタンのほとんどは、ユーザーが指定した色を持つ 2 つの四角形 (1 つがもう一方の中にある) で構成されます。イメージもあるかもしれません。私はそれが次のように動作することを望みます:

<Controls:MyCustomButton MyVarColor1="<hard coded color here>" MyVarIconUrl="<null if no icon or otherwise some URI>" MyVarIconX="<x coordinate of icon within button>" etc etc>

次に、ボタン内で、これらの値を XAML 内で使用できるようにしたいと思います (IconUrl をアイコンのソースに割り当てるなど)。

これについて間違った方法で考えているだけですか、それともこれを行う方法はありますか? 私の目的は、すべてのボタンの XAML コードを少なくすることです。

ありがとう!

4

2 に答える 2

5

はい、xaml の任意のプロパティにアクセスできますが、ControlDataBind、Animate などを使用する場合は、プロパティUserControlDependencyProperties.

例:

public class MyCustomButton : UserControl
{
    public MyCustomButton()
    {
    }

    public Brush MyVarColor1
    {
        get { return (Brush)GetValue(MyVarColor1Property); }
        set { SetValue(MyVarColor1Property, value); }
    }

    // Using a DependencyProperty as the backing store for MyVarColor1.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MyVarColor1Property =
        DependencyProperty.Register("MyVarColor1", typeof(Brush), typeof(MyCustomButton), new UIPropertyMetadata(null));



    public double MyVarIconX
    {
        get { return (double)GetValue(MyVarIconXProperty); }
        set { SetValue(MyVarIconXProperty, value); }
    }

    // Using a DependencyProperty as the backing store for MyVarIconX.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MyVarIconXProperty =
        DependencyProperty.Register("MyVarIconX", typeof(double), typeof(MyCustomButton), new UIPropertyMetadata(0));



    public Uri MyVarIconUrl
    {
        get { return (Uri)GetValue(MyVarIconUrlProperty); }
        set { SetValue(MyVarIconUrlProperty, value); }
    }

    // Using a DependencyProperty as the backing store for MyVarIconUrl.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty MyVarIconUrlProperty =
        DependencyProperty.Register("MyVarIconUrl", typeof(Uri), typeof(MyCustomButton), new UIPropertyMetadata(null));

}

xaml:

<Controls:MyCustomButton MyVarColor1="AliceBlue" MyVarIconUrl="myImageUrl" MyVarIconX="60" />
于 2012-12-27T20:56:25.883 に答える
0

XAMLでコンストラクターパラメーターを渡すことについて話している場合、これは不可能です。オブジェクトが初期化された後、プロパティを介してそれらを設定する必要があります。または、コードを介してインスタンス化する必要があります。

ここにも同様の質問があります:XAMLでデフォルトのコンストラクターを使用せずにユーザーコントロールに名前を付ける

于 2012-12-27T20:54:46.343 に答える