Я создаю ControlTemplate для ButtonControl, чтобы он выглядел как метка (плоский текст, без границ) с триггерами для IsKeyboardFocused, IsPressed, IsDefapted и т. Д.
IsPressed определяется для уменьшения FontSize (по умолчанию от 30) до 28. Чтобы создать эффект анимации при нажатии.
Одним из применений этих кнопок является горизонтальная панель стека кнопок, разделенная вертикальными разделителями. Когда триггер IsPressed нажимается на кнопку и его размер изменяется, весь ряд кнопок настраивается заново, что не является приятным визуальным эффектом.
Я предпочитаю решение на основе шаблонов, чтобы избежать введения новых элементов управления для обеспечения переопределений. Единственная проблема с жестко закодированным подходом размера - интернационализация, другие языки увеличат оригинальный размер.
Решение, с которым я иду, - это установить minWidth в C # после того, как DesiredSize кнопки был рассчитан. Обратите внимание, что Width равен NaN даже после рендеринга Button, поэтому используется / существует DesiredSize. Позже я попробую и XAMLize C #.