Мы создаем приложение XBAP, в котором нам нужно иметь закругленные углы в различных местах на одной странице, и мы хотели бы иметь контейнер WPF Rounded Corner для размещения множества других элементов внутри. Есть ли у кого-нибудь предложения или примеры кода, как мы можем лучше всего этого добиться? Либо со стилями на a, либо с созданием собственного элемента управления?
wpf
rounded-corners
FarrEver
источник
источник
Ответы:
Вам не нужен настраиваемый элемент управления, просто поместите свой контейнер в элемент границы:
Вы можете заменить
<Grid/>
любой из контейнеров макета ...источник
<Border BorderBrush="Black" BorderThickness="1" CornerRadius="8">
- подходящая замена для этого, более лаконичнаяЯ знаю, что это не ответ на первоначальный вопрос ... но вы часто хотите обрезать внутреннее содержимое только что созданной границы с закругленными углами.
Крис Кавана придумал отличный способ сделать это.
Я пробовал несколько разных подходов к этому ... и я думаю, что это круто.
Вот xaml ниже:
источник
Мне просто пришлось сделать это самому, поэтому я подумал, что опубликую здесь еще один ответ.
Вот еще один способ создать границу с закругленными углами и обрезать ее внутреннее содержимое . Это самый простой способ с использованием свойства Clip. Это хорошо, если вы хотите избежать использования VisualBrush.
XAML:
Код конвертера:
источник
Реализация решения kobusb по контролю за границами на основе кода VB.Net. Я использовал его для заполнения ListBox элементов управления Button. Элементы управления Button создаются из расширений MEF. Каждое расширение использует атрибут MEF ExportMetaData для описания расширения. Расширения представляют собой объекты диаграмм VisiFire. Пользователь нажимает кнопку, выбранную из списка кнопок, для выполнения желаемого графика.
источник
Если вы пытаетесь поместить кнопку в рамку прямоугольника с закругленными углами, вам следует ознакомиться с примером msdn . Я нашел это, поискав в Google изображения проблемы (вместо текста). Их громоздкий внешний прямоугольник (к счастью) легко удалить.
Обратите внимание, что вам придется переопределить поведение кнопки (поскольку вы изменили ControlTemplate). То есть вам нужно будет определить поведение кнопки при нажатии с помощью тега Trigger (Property = "IsPressed" Value = "true") в теге ControlTemplate.Triggers. Надеюсь, это сэкономит кому-то время, которое я потерял :)
источник