我在RichTextBox上创建了Binary类型的依赖项属性,它允许我绑定到ViewModel中的二进制形式的FlowDocument(byte [])。这很有效,属性可以正确转换和返回。
每当RichTextBox失去焦点时,依赖项属性的值将使用FlowDocument的新二进制表示进行更新。
我的问题是,如果我一直在使用RichTextBox并关闭窗口,RichTextBox不会失去焦点,因此依赖属性不会使用FlowDocument的新二进制表示更新,因此不会将新更改提交到数据库。在我的ViewModel中,我有一个方法CleanUp,当ViewModel准备好处理时,它会被调用,我可以保存更新的文档。
如何让依赖属性更新自己,因为如果用户点击关闭窗口,RichTextBox不会失去焦点? 我头脑风暴了以下几点:
你们有什么想法?
更新:依赖项属性的on changed事件添加了一个等待RichTextBox松散焦点的事件处理程序。正是此处理程序使用其新值更新依赖项。
答案 0 :(得分:0)
使用“PropertyChanged”的UpdateSourceTrigger
类似的东西:
{Binding Path=MyProperty,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}
答案 1 :(得分:0)
我曾经遇到类似的问题,我使用的解决方案是将焦点转移到另一个控件上,我从来没有遇到任何问题。
在我的情况下,窗口中有几个可编辑的控件,所以我不必使用虚拟控件。
答案 2 :(得分:0)
什么阻止你处理Window的关闭/关闭事件并移动焦点或更新绑定?