【发布时间】:2017-12-02 12:34:27
【问题描述】:
我正在制作一个小型应用程序,它是一个从数据源读取的表单,我想用它来编辑和添加新记录。
因此,表单中文文本框的默认绑定模式是TwoWay mode,因此用户可以编辑现有记录,但是我要添加一个复选框,在选中后,它将文本框中的数据标记为新的,然后添加他们到数据源,所以我需要将绑定模式更改为OneWay,
据我所知,要在代码中执行此操作,我需要创建一个新的 Binding 对象,我必须设置像 Source 这样不会改变的属性:
Binding myBinding = new Binding();
myBinding.Source = ViewModel;
myBinding.Path = new PropertyPath("SomeString");
myBinding.Mode = BindingMode.TwoWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
那么有没有办法只改变代码中的Binding模式呢?
编辑
对应用程序的一些进一步解释:
在表单中有一个绑定到List<Book> 的组合框,有3 个TextBoxs,它们的Text 属性绑定到其容器的DataContext 对象,该对象本身设置为SelectedItem Combobox。
当我按照答案中的描述添加ReadOnly 属性时,当我选中复选框时,我无法更改文本框中的文本。
..
谢谢!
【问题讨论】:
-
你是对的,你需要创建新的绑定。但。您能解释一下为什么要在代码隐藏中执行此操作吗?您可以在查看复选框
IsChecked值的触发器中设置 XAML 中的新绑定。另外我确定您不需要更改绑定的Mode。让它成为TwoWay,但当绑定到IsChecked的某些属性等于true 时,不要更新支持字段。 -
很有趣,您能否将其作为答案发布,并附上代码示例?
-
好的,我已经发布了。
标签: c# wpf data-binding binding-mode