2011-11-28 129 views
3

我有一個整數常量來定義一些整數數據的最小值和最大值,我想將它們綁定到Slider控件的屬性上,比如im在另一個數值編輯器上做的事情,但似乎不可能。Slider對Int常數的最小值/最大值綁定

有沒有簡單的方法來實現這一點?也許有價值轉換器,或者我錯過了什麼?

的示例代碼了一下:

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

此使用WpfToolkit的整數編輯器工作正常,IM:

<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}" /> 
+1

它不應該在滑塊的最小值/最大值上是'x:Static'而不是'Binding'? –

+0

哎喲,你是對的,我從我的測試複製時犯了一個錯誤。現在修復;)。 – dbalboa

回答

5

如果使用x:Static直接說沒有房間類型轉換,從而導致異常,當你試圖設置雙屬性int,但如果你這樣做只是正常工作:

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

這是因爲綁定在必要時應用了類型轉換器。即使沒有合適的轉換器,您也可以添加一個Binding.Converter

+0

它的作品完美!謝謝你的回答,XAML有很多我需要學習的東西。 – dbalboa

0

DataBinding不適用於字段,只適用於屬性。

看一看,你有:

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

在第一個例子和:

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

問題是,價值即時綁定是一個常數,我這樣做,就像我在[MSDN](http://msdn.microsoft.com/en-us/library/ms742135.aspx)或[這個stackoverflow問題] (http://stackoverflow.com/questions/232986/xaml-binding-textbox-maxlength-to-class-constant);)。正如我所說,第一個工作,問題是,即時通訊嘗試將Int值綁定到雙重屬性,我認爲。 – dbalboa

0

這是出現的錯誤消息: {「 '23' 是不是有效值爲屬性「最小」。「}

更改常量綁定到雙倍,它應該工作!

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

是的,問題是我想與另一個只接受整數值的控件使用相同的常量,而不是H.B.回答作品;)。 – dbalboa

相關問題