2016-07-12 8 views
0

私はButtonから派生し、Size、ImageSource、Textの3つのプロパティを追加するCustomButton(MetroButtonと呼ぶ)を持っています。サイズはコントロールの幅と高さを同時に表します。ResourceDictionary Selfへのテンプレートの参照

MetroButtonsはテンプレートで構成されています。テンプレートをスタンドアローンのResourceDictionary.xamlに分割したいのですが、どのようにボタンの幅と高さをカスタムプロパティ「サイズ」に参照できますか?テンプレートは、クラス外で定義されている場合(私の知る限り)のElementNameを参照する機会がありません - - と使用して、私はテンプレートがMetroButtonクラス内部で直接定義されているためのElementNameを使用することができるよ瞬間

<ControlTemplate TargetType="Button"> 
     <Border x:Name="_border" 
       Width="{Binding Size, 
           ElementName=_metroButton, 
           UpdateSourceTrigger=PropertyChanged, 
           Mode=TwoWay}" 
       Height="{Binding Size, 
           ElementName=_metroButton, 
           UpdateSourceTrigger=PropertyChanged, 
           Mode=TwoWay}" 
       Background="{StaticResource DefaultButtonBackgroundColor}" 
       BorderBrush="{StaticResource DefaultButtonBorderColor}" 
       BorderThickness="{TemplateBinding BorderThickness}"> 

RelativeSource={RelativeSource Self} 

のいずれかが期待される結果にならない場合、スタイルはまったく適用されません。

どのようなソリューションですか?

+1

は、なぜあなたは、デフォルトのテーマのXAMLにテンプレートを配置していませんか?コントロールテンプレートは 'MetroButton'型をターゲットにしています。単に' TemplateBinding'を使うだけです。 – Jai

+0

Omg、大丈夫です - 記述したように、テンプレートをDefault.xamlに入れたいのですが、MetroButtonを直接ターゲットできます。あなたのコメントを取って、私が解決策として設定する答えに入れてください: – C4p741nZ

+0

残念ながら、それは簡単ではありません - なぜ一目惚れで働いたIdk。 MetroButtonはButton(

答えて

1

RelativeSource = {RelativeSource AncestorType = {X:タイプyourButton}

関連する問題