Недавно я обнаружил, что WPF поддерживает различные единицы измерения в XAML. Помимо DIP по умолчанию, есть также поддержка пикселей, дюймов и сантиметров (насколько я знаю). Это позволяет разработчику написать XAML, например:
<Canvas>
<Line X1="0cm" X2="3cm" Y1="1cm" Y2="3cm" Stroke="Black"/>
</Canvas>
Однако вы не можете связать эти значения. Представьте, что у нас есть свойство ViewModel with Dimension, которое представляет собой строку, например «7cm». Следующее не будет работать:
<Button Width="{Binding Dimension}">Test</Button>
Выдается исключение FormatException. Точно так же при создании 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