Ползунок Минимум/Максимум привязки к константе Int

У меня есть целочисленные константы для определения минимального и максимального значений некоторых целочисленных данных, и я хочу привязать их к свойствам элемента управления 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 Value="{Binding ExampleValue}" 
    Minimum="{x:Static Model:Configuracion.EXAMPLE_MIN_VALUE}" 
    Maximum="{x:Static Model:Configuracion.EXAMPLE_MAX_VALUE}" />

person dbalboa    schedule 28.11.2011    source источник
comment
Разве не должно быть x:Static вместо Binding на Мин/Макс ползунка?   -  person Dylan Meador    schedule 28.11.2011
comment
Ой, вы правы, я сделал ошибку, когда копировал из своих тестов. Исправлено сейчас ;).   -  person dbalboa    schedule 29.11.2011


Ответы (3)


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

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

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

person H.B.    schedule 28.11.2011
comment
Он работает идеально! Спасибо за ответ, в XAML есть много вещей, которые мне нужно изучить. - person dbalboa; 29.11.2011

DataBinding не работает с полями, только со свойствами.

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

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

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

Minimum="{Binding Model:Configuracion.EXAMPLE_MIN_VALUE}"
person ppiotrowicz    schedule 28.11.2011
comment
Проблема в том, что значение привязки im является константой, я сделал это так, как видел на MSDN или этот вопрос stackoverflow;). Как я уже сказал, первый работает, проблема в том, что я пытаюсь связать значение Int с двойным свойством, я думаю. - person dbalboa; 28.11.2011

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

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

public const double EXAMPLE_MIN_VALUE = 23.0;
public const double EXAMPLE_MAX_VALUE = 55.0;
person SvenG    schedule 28.11.2011
comment
Да, проблема была в том, что я хотел использовать ту же константу с другим элементом управления, который принимает только целочисленные значения, неважно, Х.Б. ответ работает ;). - person dbalboa; 29.11.2011