wpf拖放setter在源代码中调用

时间:2011-04-13 11:53:56

标签: wpf binding drag-and-drop

我有一个像这样的文本框:

<TextBox x:Name="txtCondition" Text="{Binding Path=Name ,Mode=TwoWay}"/>

当我在此文本框中选择文本并将其拖到某处时,会自动调用此文本框中的绑定属性的setter,但我不明白为什么:(。

是否有可能以某种方式将其关闭,在这种情况下wpf不会调用setter属性?

提前感谢您的帮助!

此致 佐利

编辑:

我们必须在这里做一些黑客攻击:)。

我们在viewModel中创建一个bool变量。在previewDrop事件中将bool变量设置为true,并在调用setter时检查此bool变量值。如果是,则在setter中不执行任何操作,并将bool变量设置为false。

其他方式,您可以检查堆栈跟踪以找出调用此setter的位置:)

但是我很好奇为什么当我们从中删除一个项目时,wpf会调用源代码中的binded属性的setter,所以如果有人知道这个原因请告诉我们:)。

1 个答案:

答案 0 :(得分:0)

TextBoxes的默认绑定行为是在焦点丢失时进行更​​新,因此当您向前拖动时会触发此操作。您可以将绑定的UpdateSourceTrigger更改为Explicit以避免自动更新,但当然您需要在某个时间手动触发更新。