2009-05-14 2 views
2

Я пытаюсь изменить свойство/событие кнопки Button при срабатывании DataTrigger, но я не уверен, что это лучший способ сделать это. На самом деле, это даже не компилировать :)Изменение события Click Button на основе 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" /> 

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

ответ

1

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

2

Не было бы проще иметь только одно событие click и в этом случае утверждение if на основе вашего DataTrigger?

+0

Несомненно. Это то, что у меня было раньше, но я, по возможности, ищу решение на основе xaml. – djcouchycouch

+0

Я думаю, что я ищу EventSetter. – djcouchycouch

+0

И похоже, что EventSetter не поддерживается Trigger. – djcouchycouch

0

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