2012-06-20 64 views
0

在我的WPF Caliburn.Micro應用程序中,我有一個datagrid和一個帶有相應ModelView布爾屬性的複選框。我需要將複選框綁定到其中一個數據網格的OneWay(這很簡單)。但我也想將相同的複選框綁定到屬性OneWayToSource。你能告訴我我該怎麼做?我看不出多重綁定在這裏可以提供什麼幫助。多重綁定

謝謝。

回答

1

我不知道這是否是DataGrid的每行復選框,或者是具有特定id或索引的行的複選框。無論採用哪種方式,您都可以使用TwoWay綁定,如果您的視圖模型屬性具有getter和setter,則這將是默認設置。

您的視圖模型屬性應該指向DataGrid所綁定的記錄的實例。

E.g.

視圖模型

public ObservableCollection<Item> MyGridItems { get; set; } 

public MyViewModel() 
{ 
    this.MyGridItems = ... 
    this.MySpecialItem = this.MyGridItems[0]; 
} 

public Item MySpecialItem 
{ 
    get { return this.mySpecialItem; } 
    set { this.mySpecialItem = value; // notify of property change here } 
} 

查看

<CheckBox IsChecked="{Binding MySpecialItem.MyBooleanProperty}" /> 
+0

謝謝您的回答。但在我看來,這不是我想要的。我一定不清楚。就像你說的,我的DataGrid的源代碼是一個ObservableCollection。我希望其中一個字段成爲我的複選框的源代碼。我不希望複選框更改DataGrid內容,即ObservableCollection。因此我需要將複選框綁定到OneWay集合。但我也希望複選框能夠更改ModalView中相應屬性的值,以便在用戶更改數據庫後使用它來保存數據。 –

+0

我還不是很清楚 - 當你說ModalView時,我假設你的意思是'視圖模型'。如果是這種情況,爲什麼不只是初始化視圖模型布爾屬性的值(例如在視圖模型構造函數中),然後TwoWay將該視圖模型屬性綁定到CheckBox。當複選框被選中/取消選中時,視圖模型屬性會適當地更新(你的vm應該實現INotifyPropertyChanged,你應該調用setter中的PropertyChanged事件)。 – devdigital

+0

是的,我的意思是ViewModel,當然。是的,我可以將複選框綁定到一個屬性,因此總是獲得複選框的IsChecked值。但除此之外,我需要根據DataGrid中的選定值設置複選框的IsChecked,而不是基於上面提到的布爾屬性。因此,複選框從DataGrid中的選定項目獲取其值,並且布爾屬性從複選框中獲取其值以用於更新。 –