Jat*_*ing 2 wpf textbox updatesourcetrigger
只是一个简短的问题:
在wpf中,如何在代码隐藏中设置和获取文本框的updatesourcetrigger?
谢谢
更新:
我遵循AngleWPF的代码:
var bndExp = BindingOperations.GetBindingExpression(this, TextBox.TextProperty);
var myBinding
= bndExp.ParentBinding;
var updateSourceTrigger = myBinding.UpdateSourceTrigger;
Run Code Online (Sandbox Code Playgroud)
但我得到了例外:
PresentationFramework.dll中出现未处理的"System.Reflection.TargetInvocationException"类型的异常附加信息:调用目标已抛出异常.
你说的意思UpdateSourceTrigger的TextBox?你的意思是说UpdateSourceTrigger的TextBox.TextProperty的Binding?
例如,如果你有一个TextBox名字myTextBox,其Text属性绑定到某个源,那么你可以轻松地通过调用得到它UpdateSourceTrigger和Binding对象GetBindingExpression().
var bndExp
= BindingOperations.GetBindingExpression(myTextBox, TextBox.Textproperty);
var myBinding
= bndExp.ParentBinding;
var updateSourceTrigger
= myBinding.UpdateSourceTrigger;
Run Code Online (Sandbox Code Playgroud)
但是设置 UpdateSourceTrigger已经使用过的绑定很棘手.例如,在上述情况下,您将无法将其设置myBinding.UpdateSourceTrigger为其他内容.绑定对象已在使用时,不允许这样做.
您可能必须深度克隆绑定对象并将其设置为new UpdateSourceTrigger并将其分配回TextBox.Binding类不存在克隆.您可能必须编写自己的克隆代码.
var newBinding = Clone(myBinding); //// <--- You may have to code this function.
newBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
myTextBox.SetBinding(TextBox.TextProperty, newBinding);
Run Code Online (Sandbox Code Playgroud)
或者,您也可以尝试分离现有的Binding并更新它并将其分配回来......
myTextBox.SetBinding(TextBox.TextProperty, null);
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
myTextBox.SetBinding(TextBox.TextProperty, myBinding);
Run Code Online (Sandbox Code Playgroud)
如果这些提示有任何帮助,请告诉我.