2012-08-07 23 views
1

這裏設置最小值是代碼:我們能一起FrameworkPropertyMetadata默認值

new FrameworkPropertyMetadata((uint) 100,... 

我們可以在這裏爲100最大值設置,有沒有一種方法來設置最小值呢?比方說,我希望這個默認值在5到100之間?我看遍了谷歌沒有找到任何答案。任何人都可以請建議一個解決方案。謝謝!

代碼根據裏德·科普塞

public static bool IsValidReading(object value) 
{ 
    uint v = (uint)value; 
    return (!v.Equals(0)); 
} 

的完整代碼嘗試:

public static readonly DependencyProperty Result = 
      DependencyProperty.Register(
       "ResultLimit", typeof(uint), typeof(UI), 
       new FrameworkPropertyMetadata((uint)10, new PropertyChangedCallback(ResultChanged)), IsValidReading); 

回答

1

的值不是最大價值 - 這是默認值。

無法直接在元數據中指定最小值或最大值。這應該通過在依賴屬性中註冊的Callback來處理。

+0

更具體地說,'CoerceValueCallback'可能是最好的選擇,因爲它允許訪問依賴項對象,從而允許值範圍是可配置的。 – 2012-08-07 17:10:45

+0

@Reed Copsey - 您可以顯示一些代碼嗎?我嘗試添加(IsValidReading)方法,並讓代碼返回(!v.equals(0))。但這不是我想的方式,因爲它仍然允許用戶輸入0. – NoviceMe 2012-08-07 19:01:06

+0

@NoviceMe:你是否在回調中取消了值?盒裝無符號整數0不認爲等於文字整數0.您必須首先對其進行取消裝箱或將其比較如下:'!v.Equals(0U)'。 – 2012-08-07 20:02:50