2012-05-07 24 views
0

所以我有這個小問題使這一工作:Silverlight的三態複選框綁定到對象屬性的計算值

  1. 我有Silverlight客戶端應用程序,具有三態複選框的自定義用戶控件與雙向綁定
  2. 用戶改變複選框值之後,功能性底層平移值爲整數:

    -1 nothing 
        0 false 
        1 true 
    
  3. 用戶後從對話框保存數據,所有數據(複雜對象)正在序列化併發送到Web服務並存儲在SQL數據庫中。

  4. 當客戶端請求保存的數據從web服務回來,這回來的是對象確定
  5. 當我試圖綁定一個返回反序列化對象(EA)回覆選框這樣的:

     With cC 
          Dim b As New Binding("AllowedTo.Create") 
          b.Source = EA 
          b.Mode = BindingMode.TwoWay 
          .SetBinding(CheckBox.IsCheckedProperty, b) 
         End With 
    

它只有在值爲真或假時才能正常工作,但如果值沒有任何值,則複選框爲三態,它應該轉到第三個狀態 - 未定義 - 帶有負號[ - ],但它是劑量。 它只是停留在虛假的狀態 - 空沒有檢查,就像它是假的。

可能是什麼問題?

對不起,我的英語,它不是我的母語

回答

1

不要使用整數爲此,使用可空布爾(布爾?)。雙向結合效果很好,將其轉換:

  • 經過==真
  • 未選中==假
  • 不確定== NULL

序列化是不是可空的bool,中存在的問題事實上,你甚至不必檢查SQL字段值是否爲NULL,因爲它將是一個有效的狀態,並且在SQL數據庫中使用bool字段將甚至會減小它的大小;)

如果您的數據庫是設置,你不能改變它,寫一個轉換器將你的整數轉換爲一個可爲空的布爾綁定,不應該超過2分鐘。

+0

我沒有提到,我已經有物業「AllowedTo.Create」,女巫是可空類型(布爾)的。它從這個整數屬性來回轉換這個值。但是當它返回NOTHING時,複選框應該顯示不確定的狀態,但它只是處於未檢查狀態。如果我的屬性返回true或false,那麼它工作正常 – halloweenlv

+0

1)屬性不是轉換器...使用轉換器在綁定時轉換值。 – cosinus

+0

2)它不能返回「NOTHING」就像你說的,它可以返回一個值或拋出一個expcetion,該值可以爲空,但它不是什麼 – cosinus

0

由於這種技術是真正原生的複選框,我會建議創建一個自定義的控制來處理3個不同的狀態爲布爾值。

相關問題