上下文
<TextBox Text="{Binding Value, UpdateSourceTrigger=LostFocus}"/>
TextBox控件有一个名为UpdateSourceTrigger的绑定选项,默认情况下设置为LostFocus。但是,当TextBox在其自己的Window 中失去焦点时,这仅适用于。即使整个所有者窗口失去焦点,我也要求更新绑定。
可能的解决方案?
现在,Window.Deactivated事件似乎做得很好。
<Window x:Class="MyWindow" Deactivated="OnDeactivated">
关于问题
话虽如此,TextBox如何监听其父窗口的Window.Deactivated事件,因为TextBox存在于几层UserControl对象下。
Window --> UserControl --> UserControl --> TextBox
如何让事件从窗口向下从Window到TextBox? ( ie:让TextBox监听Window.Deactivated事件)
或许那里有更好的解决方案?
答案 0 :(得分:1)
为什么不在窗口类中添加窗口取消激活事件的处理程序,然后(在处理程序中)更新usercontrol(给它一个Update方法或其他东西)?
答案 1 :(得分:0)
您可以使用自定义行为类来实现此功能
public class CustomBehavior : Behavior<UIElement>
{
//use the override the OnAttached()
}
答案 2 :(得分:0)
WPF 4.5现在支持延迟绑定。结合PropertyChanged,这意味着一旦用户完成输入,该值将被更新,但是在延迟X毫秒之后。漂亮的,对吧?
Text="{Binding Value, UpdateSourceTrigger=PropertyChanged, Delay=2000}"/>