Привязка высоты элемента управления к единице измерения

Я знаю, что в WPF вы можете указать высоту элемента управления в разных единицах.

Например:

<Setter Property="Height" Value="0.35cm"></Setter>

Я хочу привязать высоту элемента управления к свойству в моей модели представления. Как указать, что высота указана в сантиметрах при использовании привязки? Я попытался установить свойство Height в ViewModel на строку и добавить «см» за измерением высоты:

ViewModel создается в XAML следующим образом:

<local:HeadingViewModel Height="0.35cm"></local:HeadingViewModel>

Высота элемента управления задается с помощью привязки в стиле:

<Setter Property="Height" Value="{Binding Height, RelativeSource={RelativeSource Mode=TemplatedParent}}"></Setter>

Это устанавливает высоту, но не в сантиметрах. Кажется, он установлен в единицах измерения WPF по умолчанию. Ничего не происходит, когда я меняю высоту с «0,35 см» на «0,35 дюйма». Кажется, он остается в единице измерения WPF по умолчанию.

Как я могу установить свойство высоты элемента управления через привязку в единицах измерения, отличных от единиц измерения по умолчанию?


person Ant    schedule 24.11.2011    source источник


Ответы (1)


На самом деле в WPF нет концепции привязки с использованием разных единиц измерения — все, что есть, — это TypeConverterLengthConverter, которое преобразует строку, предоставленную XAML, в double. В зависимости от введенных единиц, он умножает результат на определенный коэффициент.

Поэтому, если вы хотите привязаться к двойнику, вы должны убедиться, что вы конвертируете этот двойник в коде в единицы WPF, равные 1/94 дюйма. Или вы можете сделать IValueConverter, чтобы сделать это за вас.

Если вы хотите привязаться к строке, вы можете написать IValueConverter и вызвать LengthConverter изнутри.

person Tim Rogers    schedule 24.11.2011