Часто найдены ответы здесь, но теперь оно `s мой первый раз;)Кнопка: Привязка различных DelegateCommands в зависимости от значения ClickMode (нажатие/отпускание)
Мы используем шаблон MVVM в сочетании с DelegateCommands. Поэтому обычно я связать команду с кнопкой, как это:
<Button Command="{Binding SetXYZActivatedCommand}" />
Мне нужно выполнять различные команды, когда кнопка нажата и когда кнопка отпущена. Моя идея заключалась в следующем:
<Button Grid.Row="3" x:Name="TestButtonObj" Content="asdlknm">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" CornerRadius="80" Background="LightBlue">
<ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="border" Property="Background" Value="Aqua" />
<Setter TargetName="content" Property="Content" Value="Pressed" />
</Trigger>
<Trigger Property="ClickMode" Value="Press">
<Setter TargetName="TestButtonObj" Property="Command" Value="{Binding SetPttDeactivatedCommand}" />
</Trigger>
<Trigger Property="ClickMode" Value="Release">
<Setter Property="Button.Command" Value="{Binding SetPttActivatedCommand}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
Проблема в том, что TestButtonObj неизвестен. Хорошо, я принял, что я не могу получить доступ к родительскому объекту. Без TargetName = "TestButtonObj" он компилируется, но команда не выполняется. Mhhhh ...
Ok Я попытался следующие, но он не может работать ... CommandBinding не является свойством зависимостей (надеюсь, вы меня из этого лабиринта)
<Button Grid.Row="2" Content="CommandBindings">
<Button.CommandBindings>
<CommandBinding Command="{Binding SetPttActivatedCommand}" />
</Button.CommandBindings>
В этом Я застрял. Я не знаю, был ли путь совершенно неправильным. Я прочитал весь день документы о командах и привязке, но я не понимаю. Надеюсь, кто-то может показать мне дорогу.
Я также разместил здесь сегодня утром: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cc68b10c-4e1c-4344-9f00-710185d4b1b0 Если я получу ответ, я отправлю его здесь.
Спасибо так много (заранее), Тотти
Спасибо, хорошо выглядит. Надеюсь, у меня есть время, чтобы исследовать немного больше ... BTW Я не видел никакой информации о лицензии: можем ли мы ее использовать? в коммерческом приложении? – TottiW
Я не думаю, что есть лицензия. Автор говорит: «Этот код не тестировался много, поэтому ожидайте ошибок и т. Д. Если вы хотите использовать это в производственном коде, вы делаете это на свой страх и риск» –
Я не знаю, какова ваша конечная цель, но если вам нужно выполнить действие до тех пор, пока нажимается кнопка, вы можете взглянуть на ReapeatButton, он непрерывно запускает событие щелчка, пока он нажимается. –