2016-08-14 5 views
0

私はXAMLで書かれたかなりシンプルなカスタムコントロールを持っていますが、色を変更できるようにいくつかの依存プロパティを書き込む際に問題があります。ここでXAMLカスタムコントロール - カラープロパティバインド

は、私たちが興味を持っているコントロールのビットがある。

<Viewbox> 
    <Path Name="shape" Fill="Gray" Data="abc"/> 
</Viewbox> 
<ControlTemplate.Triggers> 
    <Trigger Property="IsChecked" Value="True"> 
    <Setter TargetName="shape" Property="Fill" Value="Gold" /> 
    </Trigger> 
</ControlTemplate.Triggers> 

私が達成したい私は私の属性として変更することができます何かに塗りつぶしのここ(グレーとゴールド)を交換することですコントロールを使用します。

だから私は、私は、MVA 1を含むいくつかの異なるビデオを試してみましたが、私は私が間違っているつもりだ場所がわからないんだけど、この

<MyControl BackColor="Blue" ForeColor="Red" /> 

で終わることができました。

この依存関係プロパティを試しました。

public Color BackgroundColor 
    { 
     get { return (Color)GetValue(BackgroundColorProperty); } 
     set { SetValue(BackgroundColorProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty BackgroundColorProperty = 
     DependencyProperty.Register("BackgroundColor", typeof(Color), typeof(StarRatingControl), new PropertyMetadata(Color.FromRgb(0,0,0))); 

、その後

Fill="{TemplateBinding BackgroundColor}" 

を使用してしかし、私はちょうど次のエラーを取得:

"静的メンバ型 'トグルボタン' オン 'BackgroundColorProperty' が見つかりません"

「メンバー 『BackgroundColorを』認識されないか、アクセスできません。」

いずれもXAMLファイルであり、CSファイルではありません。

私が間違っている場所を助けたり説明したりできますか?

+0

さらにコードを入力してください。私は何がうまくいかないのか想像することができますが、それは推測として結果になるでしょう – lokusking

+1

メモとして、プロパティの種類は、カラーではなくブラシでなければなりません。 – Clemens

答えて

0

pageRootを使用しているデモ用のページまたはユーザーコントロールに名前が付いていることを確認してください。

次に、次のコードを使用してプロパティにバインドします。

Fill="{Binding BackgroundColor, ElementName=pageRoot"} 

これにより、依存関係プロパティが見つかります。

+0

また、 'Fill =" {Binding BackgroundColor、RelativeSource = {RelativeSource AncestorType = UserControl}}と書くこともできます。 – Clemens

0

お返事ありがとうございます。私はあなたのアドバイスの組み合わせを使用して動作するようにしました。

だから、新しい塗りつぶしています

Fill="{Binding StarBackgroundColor, RelativeSource={RelativeSource AncestorType=UserControl}}" 

をし、依存関係プロパティは、型ブラシの今です。

ありがとうございました! :)

関連する問題