只是一个简短的问题:
在 wpf 中,如何在代码隐藏中设置和获取文本框的 updatesourcetrigger ?
谢谢
更新:
我遵循 AngleWPF 的代码:
var bndExp = BindingOperations.GetBindingExpression(this, TextBox.TextProperty);
var myBinding
= bndExp.ParentBinding;
var updateSourceTrigger = myBinding.UpdateSourceTrigger;
但我得到了异常(exception):
An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in PresentationFramework.dll Additional information: Exception has been thrown by the target of an invocation.
最佳答案
UpdateSourceTrigger
是什么意思的 TextBox
?你的意思是说UpdateSourceTrigger
的 TextBox.TextProperty
的Binding
?
例如。如果您有 TextBox
命名为 myTextBox
有它的Text
属性绑定(bind)到某个源,然后您可以轻松 获取 它是 UpdateSourceTrigger
和 Binding
对象来自 GetBindingExpression()
称呼。
var bndExp
= BindingOperations.GetBindingExpression(myTextBox, TextBox.Textproperty);
var myBinding
= bndExp.ParentBinding;
var updateSourceTrigger
= myBinding.UpdateSourceTrigger;
但是 很棘手设置
UpdateSourceTrigger
对于已使用的绑定(bind)。例如。在上述情况下,您将无法设置 myBinding.UpdateSourceTrigger
到别的东西。当绑定(bind)对象已在使用中时,这是不允许的。您可能需要 深度克隆 绑定(bind)对象并设置新的
UpdateSourceTrigger
并将其分配回 TextBox
. Binding
不存在克隆类(class)。您可能必须为此编写自己的克隆代码。 var newBinding = Clone(myBinding); //// <--- You may have to code this function.
newBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
myTextBox.SetBinding(TextBox.TextProperty, newBinding);
或者你也可以尝试分离 现有的 Binding 并更新它并将其分配回......
myTextBox.SetBinding(TextBox.TextProperty, null);
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
myTextBox.SetBinding(TextBox.TextProperty, myBinding);
让我知道这些提示是否有帮助。
关于wpf - 如何在代码隐藏中设置和获取文本框的 updatesourcetrigger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990137/