wpf как отключить анимацию по умолчанию при нажатии кнопки - PullRequest
0 голосов
/ 04 октября 2010

У меня есть карточная игра, в которой я хочу щелкнуть по кнопке, чтобы привязать фон кнопки скорби к тому, что я делаю:

<Button 
  Name="btn"
  Click="Button_Click"
  DataContext="{Binding}"
  Height="65" Width="79"
  Background="Black"/>

<DataTemplate.Triggers>
  <Trigger SourceName="btn" Property="IsMouseCaptured" Value="True">
    <Setter TargetName="btn" Property="Background" Value="Green"/>
    <!--"{Binding Path=ButtonColor}"-->
  </Trigger>
</DataTemplate.Triggers>

по причине, по которой я слишком невежественен, чтобы понятьэто не работает (обратите внимание, что сама привязка работает, когда я использую привязку в состоянии по умолчанию)

1 Ответ

1 голос
/ 05 октября 2010

Кажется, что если вы собираетесь использовать подход с «выделенным кодом», зачем вообще беспокоиться о триггерах?

Просто установите btn.Background = new SolidColorBrush(Colors.Green); в обработчике кликов, и все готово.

РЕДАКТИРОВАТЬ:

По сути, ваш триггер шаблона работает, но не так, как вы ожидаете.Если вы провели некоторое изолированное тестирование, вы увидите, что фон становится зеленым, когда вы щелкаете по нему, но сразу же возвращается к исходному цвету.

Лучше всего использовать ToggleButton.Таким образом, вы можете использовать свойство IsChecked, чтобы установить цвет фона.Хитрость здесь в том, чтобы изменить его обратно при нажатии на какой-либо другой переключатель.Вот где приходит ваш MVVM.

Сценарий:

Ваша View-Model будет иметь коллекцию сказать ... "Карты", и каждая карта может иметь свойство для представления, если оно имеетбыл "включен".Теперь, в случае, если вы открыли карту, ваша View-Model должна циклически пройтись по вашей коллекции «Cards» и установить для всех «Card» значение «повернуло» в false, за исключением одной карты, которая «поднимается»конечно.Теперь свяжите свойство ToggleButton.IsChecked со свойством «повернуто» для каждой модели «Карточка», к которой оно привязано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...