Итак, я только что наткнулся на это решение, затем перешел по ссылке на форум MSDN, которую предоставил Джоби, и потратил 20 минут на написание своего собственного элемента управления ClippingBorder.
Затем я понял, что тип свойства CornerRadius не является двойным, а System.Windows.CornerRaduis, который принимает 4 двойных, по одному на каждый угол.
Итак, я собираюсь перечислить другое альтернативное решение сейчас, которое, скорее всего, удовлетворит требования большинства людей, которые наткнуться на этот пост в будущем ...
Допустим, у вас есть XAML, который выглядит следующим образом:
<Border CornerRadius="10">
<Grid>
... your UI ...
</Grid>
</Border>
И проблема в том, что фон элемента Grid просвечивает и проходит за закругленными углами. Убедитесь, что ваш <Grid>
имеет прозрачный фон, вместо того, чтобы назначать ту же кисть свойству "Background" элемента <Border>
. Больше никаких кровотечений за углами и не нужно целую кучу кода CustomControl.
Это правда, что теоретически клиентская область по-прежнему может рисовать за краем угла, но вы контролируете этот контент, чтобы вы, как разработчик, могли либо иметь достаточно отступов, либо убедиться, что форма элемента управления рядом с краем уместно (в моем случае мои кнопки круглые, поэтому без проблем очень удобно помещаются в углу).