2017-10-11 2 views
-2

のは、私はいくつかの子供を持つユーザーコントロールがアクセスWPFユーザーコントロールの子要素のプロパティ

<UserControl x:Class="Any.AnyControl" 
    <Grid> 
     <Label Name="label1" Background="Black" /> 
     ... more controls here 
    </Grid> 
</UserControl> 

を制御し、私はそうのようにメインウィンドウにそれを使用するとしましょう:

<Window> 
    <Grid> 
     <local:AnyControl/> 
     // I want to access AnyControl label1 Background property here 
    </Grid> 
</Window> 

私はAnyControl LABEL1にアクセスできる方法を知っていますコードビハインドのバックグラウンドプロパティですが、親XAMLにアクセスできる方法はありますか?

私のコード今:ユーザーコントロール

<Label Background="{Binding LabelBackground, RelativeSource={RelativeSource AncestorType=UserControl}}" /> 

で親XAMLで

<local:AlertControl LabelBackground="Blue">       

とこれも

<Label Background="{Binding LabelBackground, RelativeSource={RelativeSource AncestorType=local:AlertControl}}" /> 
+2

ユーザーコントロールは、プロパティ、例えば 'LabelBackground'、へを公開するべきですラベルのバックグラウンドは、

+0

あなたの返信をありがとう。親XAMLでこの方法にどのようにアクセスできるかはまだ分かりません。どうか、私に例を挙げてもらえますか? – hkhk

+0

''に似ています。重複する質問に示すように、LabelBackgroundはAnyControlの依存関係プロパティでなければなりません。 – Clemens

答えて

0

てみてください、それはベストプラクティスではありませんが、(このようにしてください親コントロールでコントロールをスタイル設定する):

<local:AnyControl> 
    <local:AnyControl.Resources> 
     <Style TargetType="{x:Type Label}"> 
      <Setter Property="Background" Value="Red" /> 
     </Style> 
    </local:AnyControl.Resources> 
</local:AnyControl> 

これは、UserControl内の特定の種類のすべてのコントロールの背景プロパティを設定します。名前で選択したコントロールのためにそれを変更したい場合は、(自分のコントロールの名前に変更Value="Test")そのような何かを行うことができます。

<local:AnyControl> 
    <local:AnyControl.Resources> 
     <Style TargetType="{x:Type Label}"> 
      <Style.Triggers> 
       <Trigger Property="Name" Value="Test"> 
        <Setter Property="Background" Value="Red" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </local:AnyControl.Resources> 
</local:AnyControl> 
+0

あなたの返信ありがとうございます。はい、これはうまくいくはずですが、コードビハインドで1行のコードでそのプロパティを変更するのはあまりにも複雑すぎると思います。 – hkhk

+0

あなたの質問は、「コードビハインドのAnyControl label1 Backgroundプロパティにどのようにアクセスできるのか知っていますが、親XAMLにアクセスできる方法はありますか?」よりよい練習ではありません... –

+0

私はあなたが正しいことを知っています、それが私があなたの答えを答えにした理由です。ありがとうございます – hkhk

関連する問題