Назначение числа с плавающей запятой десятичному свойству с помощью установщика стиля в WPF - PullRequest
0 голосов
/ 12 мая 2010

У меня есть следующий xaml в шаблоне для элемента управления без вида:

<Style x:Key="NumericUpDownStyle" TargetType="controls:NumericUpDown">
    <Style.Setters>
        <Setter Property="Change" Value="{x:Static local:Preferences.ChangeAmount}"/>
    </Style.Setters>
</Style>

Где свойство Change в элементе управления NumericUpDown является десятичным, а статическое Preferences.ChangeAmount является плавающим.

Это происходит со следующей ошибкой:

'1' не является допустимым значением для свойства 'Change'

Есть ли способ заставить стиль преобразовать число с плавающей точкой в ​​десятичную? Нельзя изменить элемент управления NumericUpDown, базовый элемент управления, который я создаю, или свойство Preferences.ChangeAmount. Я могу сделать некоторые статические свойства обёртки где-нибудь, чтобы выполнить кастинг, но мне это кажется глупым.

Есть идеи?

1 Ответ

0 голосов
/ 12 мая 2010

Вместо непосредственного использования расширения разметки {x:Static ...} вы можете попробовать обернуть его в Binding следующим образом:

<Setter Property="Change" Value="{Binding Source={x:Static local:Preferences.ChangeAmount}, Mode=OneWay}"/>

Это может уже работать, поскольку Binding обычно заботится о необходимых преобразованиях. Если это не работает, вы можете добавить соответствующий IValueConverter к Binding.

Для повышения производительности вы также можете установить для свойства Mode значение OneTime вместо OneWay. Однако я не уверен, будет ли это работать. Удачи!

...