私は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}
のいずれかが期待される結果にならない場合、スタイルはまったく適用されません。
どのようなソリューションですか?
は、なぜあなたは、デフォルトのテーマのXAMLにテンプレートを配置していませんか?コントロールテンプレートは 'MetroButton'型をターゲットにしています。単に' TemplateBinding'を使うだけです。 – Jai
Omg、大丈夫です - 記述したように、テンプレートをDefault.xamlに入れたいのですが、MetroButtonを直接ターゲットできます。あなたのコメントを取って、私が解決策として設定する答えに入れてください: – C4p741nZ
残念ながら、それは簡単ではありません - なぜ一目惚れで働いたIdk。 MetroButtonはButton(