Привязка высоты элемента управления к единице измерения - PullRequest
2 голосов
/ 24 ноября 2011

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

Например:

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

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

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

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

The Heightэлемента управления устанавливается через привязку в стиле:

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

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

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

1 Ответ

1 голос
/ 24 ноября 2011

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

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

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

...