2 ответа

Лучший ответ

Используйте отрицательный знак Margin на ярлыке, например Margin="0,0,-10,0" делает ярлык на 10 пикселей короче справа по макету. (Чтобы предотвратить перекрытие, поместите его в контейнер и установите ClipToBounds="True")

1
H.B. 27 Апр 2011 в 22:42
Х.Б .: +1 Это был самый быстрый хороший ответ, который я когда-либо получал. Это тоже решение, но что, если бы я действительно хотел сделать предыдущий элемент на 5 пикселей короче для системы макета, но все же полностью отобразить его? Вместо установки поля следующего элемента Margin="-5,0,0,0"? Потому что так работают с кернингом другие редакторы (например, RichTextBox). Я не понимаю, почему они не используют для этого что-то вроде поля, но может возникнуть проблема при выделении текста и так далее (когда элементы перекрывают друг друга).
 – 
Rasto
27 Апр 2011 в 22:53
1
Я не совсем понимаю вашу проблему, если вы установите Margin="0,0,-5,0" в предыдущем элементе, он должен быть короче и все равно будет отображаться, если вы не установите отсечение.
 – 
H.B.
27 Апр 2011 в 23:16

Моя проблема с решением H.B. заключалась в том, что я не могу привязать только верхнее поле.

Я использую XAML, как это, чтобы создать своего рода круглую полосу выполнения (эллипс, который обрезается вверху):

<Canvas Name="ProgressIndicator" Width="120" Height="{Binding ProgressIndicatorHeight}" ClipToBounds="True">
    <Ellipse Width="120" Canvas.Bottom="0" Height="120" Fill="#FF7090B7"/>
</Canvas>

Когда я изменяю высоту холста, верхняя часть эллипса обрезается (потому что она выравнивается по нижней части холста). если я выровнял его по верхнему краю (по умолчанию), он будет обрезан снизу.

Я использую эту конструкцию внутри круглого значка, чтобы заполнять его пропорционально прогрессу.

0
JCH2k 15 Ноя 2013 в 19:31