【问题标题】:Slider Minimum / Maximum binding to Int constant滑块最小值/最大值绑定到 Int 常量
【发布时间】:2012-01-08 01:12:11
【问题描述】:

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

【问题讨论】:

  • 滑块的最小值/最大值不应该是x:Static而不是Binding吗?
  • 哎呀,你是对的,我从我的测试中复制时犯了一个错误。现已修复;)。

标签: wpf data-binding types slider converter


【解决方案1】:

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

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

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

【讨论】:

  • 完美运行!感谢您的回答,XAML 有很多我需要学习的东西。
【解决方案2】:

DataBinding 不适用于字段,只能用于属性。

看看,你有:

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

在第一个例子中:

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

【讨论】:

  • 问题在于 im 绑定的值是一个常量,我这样做就像我在 MSDNthis stackoverflow question 上看到的那样;)。正如我所说,第一个正在工作,问题是我试图将 Int 值绑定到我认为的双属性。
【解决方案3】:

这是出现的错误消息: {"'23' 不是属性 'Minimum' 的有效值。"}

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

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

【讨论】:

  • 是的,问题是我想将相同的常量与另一个只接受整数值的控件一起使用,没关系,H.B.答案有效;)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多