0

コントロール テンプレートを使用して、簡単な方法でボタンの外観を変更しました。見た目は変わりましたが、ボタンのようには動作しません。実際には次の 2 つの問題があります。

  1. ボタンのコマンドは実行されません
  2. ボタンをクリックすると、選択されたように見えます (つまり、楕円が醜い青い長方形に変わります)。

一般的な考え方は次のとおりです。

<Button Command="{x:Static commands:...}"
        CommandParameter="{Binding}">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Ellipse Fill="{Binding ...}"
                     .../>
        </ControlTemplate>
    </Button.Template>
</Button>
4

3 に答える 3

2
  1. これが起こるべき理由はありません。ApplicationCommands.Copy を使用してテストをまとめたところ、コマンドは問題なく実行されました。CommandBinding正常に動作していない可能性があります。
  2. また、サンプル XAML をコピーして設定しただけでは、これはわかりませんでしたFill="Green"FocusVisualStyle="{x:Null}"で設定を試すことができますButton
于 2009-11-11T18:04:07.563 に答える
1

Fill問題は、null になる可能性のある値にバインドされていることが判明しました。ブラシが透明ではなくヌルの場合、Fillクリックするものはなく、コマンドは実行されません。Drew が述べたように、ベタ塗りでボタンは正しく機能します。

教訓: シェイプを非表示にしたいが、ユーザー インタラクションに反応させたい場合は、ヌル ブラシではなく、透明なブラシを使用してください。

于 2009-11-11T20:14:03.580 に答える
0

カスタム テンプレート ボタンで同様の問題が発生しました。

     <my:UniButton Command="{Binding MyCommand}"/>

RelativeSource を追加するまでバインディングは機能しませんでした:

     <my:UniButton Command="{Binding MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:CustomPanel}}"/>

CustomPanel は、ボタンがあるコントロールです。

Withal 同じパネルにシンプルなボタンがありましたが、RelativeSource がなくても問題なく動作しました。

于 2014-04-03T13:26:00.083 に答える