我正在製作一個小應用程序,它是一個從數據源讀取的表單,我想用它來編輯和添加新記錄。 所以表單中文本框的默認綁定模式是TwoWay
模式,所以用戶可以編輯現有記錄,但是我想添加一個複選框,當它被選中時,它將文本框中的數據標記爲新的,然後添加它們到數據源,所以我需要將綁定模式更改爲OneWay
, 就我所知,要在代碼中執行此操作,我需要創建一個新的Binding
對象,我將不得不設置不會更改的屬性,如Source
:更改代碼中的綁定模式?
Binding myBinding = new Binding();
myBinding.Source = ViewModel;
myBinding.Path = new PropertyPath("SomeString");
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
那麼有沒有辦法只改變代碼中的綁定模式?
EDIT
本申請的一些進一步的解釋:
在形式有綁定到一個List<Book>
組合框,有3個TextBox
S,其Text
屬性綁定到的DataContext
對象它們的容器本身設置爲Combobox
的SelectedItem
。 當我按照答案中所述添加ReadOnly
屬性時,當選中該複選框時,我無法更改文本框中的文本。
..
謝謝!
你是對的,你需要創建新的綁定。但。你能解釋爲什麼你想在代碼隱藏方面做到這一點?您可以在觸發器中設置XAML中的新綁定,查看複選框「IsChecked」的值。另外我確定你不需要改變'Mode'的綁定。讓它成爲'TwoWay',但當綁定到'IsChecked'的某個屬性等於true時,不更新後備字段。 – Maxim
有趣,你可以請它張貼作爲答案,代碼示例? –
好的,我發佈了它。 – Maxim