Ползунок Минимальное / Максимальное связывание с константой Int - PullRequest
3 голосов
/ 28 ноября 2011

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

Есть ли простой способ сделать это? Может быть с преобразователями значений, или я что-то упустил?

Немного примера кода:

public const Int32 EXAMPLE_MIN_VALUE = 23;
public const Int32 EXAMPLE_MAX_VALUE = 55;

Это работает нормально, я использую целочисленный редактор WpfToolkit:

<WpfToolkit:IntegerUpDown Value="{Binding ExampleValue}" 
    Minimum="{x:Static Model:Configuracion.EXAMPLE_MIN_VALUE}" 
    Maximum="{x:Static Model:Configuracion.EXAMPLE_MAX_VALUE}" />

Но когда я пытаюсь сделать то же самое с Slider, происходит сбой:

<Slider Value="{Binding ExampleValue}" 
    Minimum="{x:Static Model:Configuracion.EXAMPLE_MIN_VALUE}" 
    Maximum="{x:Static Model:Configuracion.EXAMPLE_MAX_VALUE}" />

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

Если вы используете x:Static напрямую, у которого нет места для преобразования типов и, следовательно, возникает исключение, когда вы пытаетесь установить int для двойного свойства, но если вы делаете это, это работает просто отлично:

Minimum="{Binding Source={x:Static local:MainWindow.TestConstInt}}"

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

0 голосов
/ 28 ноября 2011

Это сообщение об ошибке, которое появляется: {"23" не является допустимым значением для свойства "Минимум". "}

Измените постоянную привязку на double, и она должна работать!

public const double EXAMPLE_MIN_VALUE = 23.0;
public const double EXAMPLE_MAX_VALUE = 55.0;
0 голосов
/ 28 ноября 2011

Привязка данных не работает с полями, только со свойствами.

Посмотрите, у вас есть:

Minimum="{x:Static Model:Configuracion.EXAMPLE_MIN_VALUE}"

В первом примере и:

Minimum="{Binding Model:Configuracion.EXAMPLE_MIN_VALUE}"
...