Недавно я обнаружил, что WPF поддерживает различные единицы измерения в XAML. Помимо DIP-модулей по умолчанию, есть также поддержка пикселей, дюймов и сантиметров (насколько я знаю). Это позволяет дизайнеру написать XAML, например:
<Canvas>
<Line X1="0cm" X2="3cm" Y1="1cm" Y2="3cm" Stroke="Black"/>
</Canvas>
Однако вы не можете привязать эти значения. Представьте, что у нас есть свойство ViewModel с свойством Dimension, которое является строкой, например "7 см". Следующее не будет работать:
<Button Width="{Binding Dimension}">Test</Button>
Отключается форматированиеException. Аналогично, при создании FrameworkElement
в кодировке, например:
Canvas1.Children.Add(new Button() { Width = "3cm", Content = "Test"});
Ошибка компиляции из-за исключения в конструкторе/везде, где вы пытаетесь создать элемент управления.
Интересно:
- Можно ли использовать натуральные единицы (в моем случае метрические сантиметры) в коде?
- Как?
- Имеется ли полный список устройств, поддерживаемых WPF/XAML?
EDIT:
Ниже приведена ссылка с комментария, которая решает этот вопрос:
http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.width.aspx