Я использую два метода относительного размера. У меня есть класс под названием Relative
с тремя присоединенными свойствами To
, WidthPercent
и HeightPercent
, который полезен, если я хочу, чтобы элемент имел относительный размер элемента в любом месте визуального дерева и чувствовал себя менее взломанным, чем подход преобразователя - хотя используйте то, что работает для ты, которым ты доволен.
Другой подход более хитрый. Добавьте ViewBox
там, где вы хотите указать относительные размеры внутри, а затем внутри него добавьте Grid
с шириной 100. Затем, если вы добавите TextBlock
с шириной 10 внутри него, это, очевидно, будет 10% от 100.
ViewBox
будет масштабировать Grid
в соответствии с предоставленным ему пространством, поэтому, если это единственное, что есть на странице, то Grid
будет масштабироваться на всю ширину и эффективно, ваш TextBlock
масштабируется до 10% страницы.
Если вы не установите высоту для Grid
, он будет уменьшаться, чтобы соответствовать его содержимому, поэтому все будет иметь относительно размер. Вам нужно будет убедиться, что контент не становится слишком высоким, т.е. начинает изменять соотношение сторон пространства, предоставленного ViewBox
, иначе он также начнет масштабировать высоту. Вероятно, вы можете обойти это, установив Stretch
из UniformToFill
.
person
Luke Puplett
schedule
30.07.2013