2012-07-21 33 views
1

我想一個複選框綁定到自定義對象布爾屬性如下:綁定自定義對象複選框在VB.NET

chkTableIsReadonly.DataBindings.Add(New Binding("Checked", objectBindingSource, "ApplyforVisa", True, DataSourceUpdateMode.OnPropertyChanged, False)) 

自定義類支持INotifyPropertyChanged接口。

一切工作發現,當我複選框最初綁定到一個新的對象:

objectBindingSource.Datasource = new objectToBindTo

這裏是奇數部分:

  1. 如果我選中該複選框,設置屬性被調用並且INotifyPropertyChanged事件被調用,每個人都很高興。
  2. 如果我取消選中同一個框,Set屬性不會被調用,INotifyPropertyChanged事件永遠不會被調用,並且(更差的部分),我無法導航到另一條記錄。

我已經嘗試捕獲CheckedChanged事件手動設置object.ApplyForVisa屬性,但沒有成功。屬性Set被調用,INotifyPropertyChanged事件被調用,但我仍然被鎖定在控件上,無法導航。

我曾嘗試在CheckedChanged事件中調用bindingsource.endedit,但沒有成功。

只有當我取消勾選框時才重要。該複選框爲雙態 - 真或假。

我所有的其他綁定工作得很好 - 文本框,組合框,數據網格。只是不復選框。

我唯一的想法是,似乎行爲像一個綁定源數據錯誤,但沒有錯誤引發。如果我爲綁定源添加數據錯誤事件處理程序,它永遠不會被調用。

+0

您可以包含'objectToBindTo'實現的代碼,包括'ApplyForVisa'屬性以及任何附加的處理程序到'PropertyChanged'的實例嗎? – 2012-07-26 15:30:31

回答

4

假設ApplyForVisa屬性是一個布爾值,您可以通過將BindingformattingEnabled參數設置爲False來解決此問題。

chkTableIsReadonly.DataBindings.Add(_ 
    New Binding("Checked", objectBindingSource, "ApplyforVisa", _ 
       False, DataSourceUpdateMode.OnPropertyChanged, False)) 
相關問題