Изменение события нажатия кнопки на основе DataTrigger - PullRequest
2 голосов
/ 14 мая 2009

Я пытаюсь изменить свойство / событие Click кнопки, когда запускается DataTrigger, но я не уверен, что это лучший способ сделать это. На самом деле, он даже не скомпилируется:)

Что у меня выглядит так:

<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 »»

Есть предложения? Если это невозможно, какие есть альтернативы?

Спасибо!

Edit:

Я думал, что нашел решение, которое заключалось бы в использовании EventSetter, но EventSetters не поддерживаются внутри триггеров. Я думал, что сработало бы:

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

Но, как я уже сказал, это поддерживается вообще.

Ответы [ 3 ]

2 голосов
/ 14 мая 2009

Разве не было бы проще иметь одно событие клика и в этом случае оператор if, основанный на вашем DataTrigger?

1 голос
/ 14 мая 2009

Клик не является свойством, это событие. Кнопки имеют свойство IsPressed, которое становится истинным при нажатии кнопки. Вы можете попробовать использовать это.

0 голосов
/ 14 мая 2009

Вместо использования события Click, попробуйте использовать свойство Command кнопки. Вы должны иметь возможность переключаться на указанную команду, основываясь на триггере.

...