У меня есть ControlTemplate
, который я использую для изменения внешнего вида и поведения нескольких Button
с. Я хочу, чтобы только часть Button
была кликабельной и выполняла ограничение Command
, поэтому я добавил Button
в ControlTemplate
и привязал его к свойству Command
шаблона.
Проблема, с которой я столкнулся, заключается в том, что, поскольку я определяю привязку Command
для шаблонного Button
, она выполняется независимо от того, какую часть шаблона я нажимаю.
В приведенном ниже примере вы можете нажать Border
и выполнить Command
. Как изменить его так, чтобы Command
выполнялся только при нажатии Button
в шаблоне?
<ControlTemplate x:Key="ButtonControlTemplate" TargetType="{x:Type Button}">
<Border BorderThickness="10" BorderBrush="Black">
<Button
Command="{TemplateBinding Command}"
CommandParameter="{TemplateBinding CommandParameter}" >
<ContentPresenter Content="{TemplateBinding Content}" />
</Button>
</Border>
</ControlTemplate>
...
<Button
Command="{Binding Path=SomeViewmodelCommand}"
CommandParameter="{Binding Path=SomeViewmodelCommandParameter}"
Content="Click"
Template="{StaticResource ButtonControlTemplate}" />
Я не думаю, что смогу шаблонировать другой элемент (например, Border
), потому что мне все равно нужно каким-то образом передать Command
, а присоединенные свойства все равно будут давать мне такое же поведение.