2

DataTrigger がトリガーされたときにボタンの Click プロパティ/イベントを変更しようとしていますが、これが最適な方法であるかどうかはわかりません。実際、それはコンパイルさえしません:)

私が持っているものは次のようになります:

<Style TargetType="{x:Type Button}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Replaceable}" Value="False">
            <Setter Property="Content" Value="Add" />
            <Setter Property="Button.Click" Value="AddObject_Click" />
        </DataTrigger>
        <DataTrigger Binding="{Binding ElementName=ObjectTreeView, Path=SelectedItem.Replaceable}" Value="True">
            <Setter Property="Content" Value="Replace" />
            <Setter Property="Button.Click" Value="ReplaceObject_Click" />
        </DataTrigger>
    </Style.Triggers>            
</Style>

コンパイルすると、「タイプ 'System.Windows.Controls.Button' のスタイル プロパティ 'Click' が見つかりません」というエラー メッセージが表示されます。

助言がありますか?これが不可能な場合、どのような代替手段がありますか?

ありがとう!

編集:

EventSetter を使用する解決策を見つけたと思いましたが、EventSetter は Triggers 内ではサポートされていません。私がうまくいったと思ったのは:

<EventSetter Event="Button.Click" Handlder="AddObject_Click" />

しかし、私が言ったように、これはまったくサポートされています。

4

3 に答える 3

2

クリック イベントを 1 つだけ作成し、そのイベントで DataTrigger に基づく if ステートメントを使用する方が簡単ではないでしょうか?

于 2009-05-14T15:24:19.130 に答える
1

Click はプロパティではなく、イベントです。ボタンには IsPressed プロパティがあり、ボタンが押されると true になります。あなたはそれを使ってみることができます。

于 2009-05-14T17:28:16.447 に答える
0

Click イベントを使用する代わりに、ボタンの Command プロパティを使用してみてください。トリガーに基づいて、それが指すコマンドを切り替えることができるはずです。

于 2009-05-14T18:04:47.357 に答える