将只读GUI属性推回ViewModel
我想要写一个视图模型,它总是知道视图中某些只读依赖属性的当前状态。
具体来说,我的GUI包含一个FlowDocumentPageViewer,它每次从FlowDocument中显示一个页面。FlowDocumentPageViewer公开了两个名为CanGoToPreviousPage和CanGoToNextPage的只读依赖项属性。我希望我的ViewModel始终知道这两个View属性的值。
我想我可以通过OneWayToSource数据库实现这一点:
<FlowDocumentPageViewer
CanGoToNextPage="{Binding NextPageAvailable, Mode=OneWayToSource}" ...>
如果允许这样做,它将是完美的:每当FlowDocumentPageViewer的CanGoToNextPage属性更改时,新的值将被向下推到ViewModel的NextPageAvailable属性中,这正是我想要的。
不幸的是,这不能编译:我收到一个错误的说法“CanGoToPreviousPage”属性是只读的,不能从标记中设置。显然只读属性不支持任何这是一种数据绑定,甚至不是针对该属性的只读数据。
我可以将ViewModel的属性变成DependencyProperties,并使OneWay绑定向相反的方向发展,但我并不热衷于关注点冲突的分离(ViewModel需要引用视图,MVVM数据库应该避免这种情况)。
FlowDocumentPageViewer不公开CanGoToNextPageChanged事件,而且我也不知道从DependencyProperty获取更改通知的任何好方法,除非创建另一个DependencyProperty来绑定它,这在这里似乎有点过分。
如何将视图只读属性的更改通知ViewModel?