滑块最小/最大绑定到Int常量

时间:2011-11-28 15:32:40

标签: wpf data-binding types slider converter

我有一个整数常量来定义某些整数数据的最小值和最大值,我想将它们绑定到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 个答案:

答案 0 :(得分:5)

如果您直接使用x:Static没有进行类型转换的空间,因此当您尝试在double属性上设置int时会导致异常,但如果您这样做,它就可以正常工作:

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

这是因为绑定在必要时应用类型转换器。即使没有合适的类型转换器,您也可以添加Binding.Converter

答案 1 :(得分:0)

DataBinding不适用于字段,仅适用于属性。

看一下,你有:

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

在第一个例子中:

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

答案 2 :(得分:0)

这是出现的错误消息: {“'23'不是属性'最小'的有效值。”}

将常量绑定更改为double,它应该可以工作!

public const double EXAMPLE_MIN_VALUE = 23.0;
public const double EXAMPLE_MAX_VALUE = 55.0;