Wpf 在程序退出之前更新依赖项属性
我在RichTextBox上创建了一个类型为Binary的依赖属性,它允许我绑定到ViewModel中二进制格式(字节[])的FlowDocument。这很好,属性可以正确地进行转换 每当RichTextBox失去焦点时,依赖项属性的值就会用FlowDocument的新二进制表示形式更新 我的问题是,如果我一直在使用RichTextBox并关闭窗口,RichTextBox不会失去焦点,因此依赖项属性不会用FlowDocument的新二进制表示更新,因此新的更改不会提交到数据库。在我的ViewModel中,我有一个方法CleanUp,当ViewModel准备处理时调用它,在这里我可以保存更新的文档 如果用户单击关闭窗口,RichTextBox不会失去焦点,如何使dependency属性自我更新? 我进行了以下头脑风暴:Wpf 在程序退出之前更新依赖项属性,wpf,mvvm,dependency-properties,mvvm-light,Wpf,Mvvm,Dependency Properties,Mvvm Light,我在RichTextBox上创建了一个类型为Binary的依赖属性,它允许我绑定到ViewModel中二进制格式(字节[])的FlowDocument。这很好,属性可以正确地进行转换 每当RichTextBox失去焦点时,依赖项属性的值就会用FlowDocument的新二进制表示形式更新 我的问题是,如果我一直在使用RichTextBox并关闭窗口,RichTextBox不会失去焦点,因此依赖项属性不会用FlowDocument的新二进制表示更新,因此新的更改不会提交到数据库。在我的ViewMo
更新:dependency属性的on changed事件添加了一个事件处理程序,它正在等待RichTextBox释放焦点。就是这个处理程序用它的新值更新依赖项 使用“PropertyChanged”的UpdateSourceTrigger 比如:
{Binding Path=MyProperty,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}
我曾经遇到过一个类似的问题,我使用的解决方案是将焦点移到另一个控件上,我从来没有遇到过任何问题
在我的例子中,窗口中有几个可编辑控件,因此我不必使用虚拟控件。是什么阻止了您处理窗口的关闭/关闭事件以及移动焦点或更新绑定?这意味着对于RichTextBox中的每一个小更改,需要创建一个表示二进制FlowDocument的新对象,并将其设置为BinaryFlowDocument依赖项属性的值。我也尝试了上面的方法,但是依赖项属性从未更新,除非焦点确实丢失。如果我直接绑定到RichTextBox的Document属性,这可能是一种方法。那么您将视图模型绑定到什么?我们如上所述将视图模型绑定到控件,它起到了处理作用。我绑定到我创建的BinaryFlowDocument的依赖属性。RichTextBox已扩展以保存此属性。我将尝试通过附加属性移动焦点,如本文所述: