Я думаю, здесь есть пара проблем.
Во-первых, вы не поднимаете уведомления об изменении свойств для ButtonStyle. Либо измените ButtonStyle на свойство зависимости, либо внедрите INotifyPropertyChanged в MyCustomButton, и вызовите событие PropertyChanged из установщика ButtonStyle. В этом случае подход со свойством зависимости, вероятно, лучше, потому что в какой-то момент кто-то захочет установить ButtonStyle через стиль, и только DP могут быть стилизованы.
Во-вторых, ваш триггер данных выглядит как контекст данных, который, вероятно, не является элементом управления. (Если вы заглянете в окно «Вывод», вы, вероятно, увидите ошибки привязки из-за невозможности найти свойство «ButtonStyle» в каком-либо объекте данных.) Это можно обойти, добавив RelativeSource={RelativeSource Self}
к вашему DataTrigger. Однако, если вы измените ButtonStyle на DP, как предложено, вы просто сможете использовать простой старый триггер, который автоматически работает со свойствами стилизованного элемента управления:
<Style.Triggers>
<Trigger Property="ButtonStyle" Value="CutLeft">
<Setter Property="CornerRadius" TargetName="border" Value="0 11 11 0" />
</Trigger>
</Style.Triggers>
(Обратите внимание, что вам не нужно указывать элемент Trigger.Setters
или DataTrigger.Setters
. Читатель XAML заменит его для вас.)