C#/WinRT中的全局状态对象
为了简单起见,我尝试在C#/XAML/WinRT中实现以下体系结构:C#/WinRT中的全局状态对象,c#,wpf,xaml,windows-runtime,reactive-programming,C#,Wpf,Xaml,Windows Runtime,Reactive Programming,为了简单起见,我尝试在C#/XAML/WinRT中实现以下体系结构: Global App State -> Bindings -> Pages / User Controls etc -| ^ | |------------- update -----------------------------| 因此,基本上,FP/reactive是时尚的。页面
Global App State -> Bindings -> Pages / User Controls etc -|
^ |
|------------- update -----------------------------|
因此,基本上,FP/reactive是时尚的。页面和UI绑定到全局状态对象的属性,每当视图想要更新某些内容时,它都会直接(或通过视图模型类,无论什么)更改全局应用程序状态,并立即(通过绑定)更新应用程序的所有其他从属部分
我知道dependencProperties
和INotifyPropertyChanged
,因此绑定到属性应该不是问题
然而,在理想情况下,即使我完全替换全局状态对象,我也希望这种情况发生。比方说,这是一个多用户应用程序,那么我想像这样切换用户:
App.State = LoadStateForUser(...);
以及绑定到全局状态更新的UI的所有部分。现在我必须自己设置每个不同的属性。这有可能吗
请注意,我不是在征求关于MVC或MVVM或其他任何设计模式的建议。您可以这样做,但它肯定不会自动进行 我会在
App
(或gloabstateservice
,或其他任何东西)上发生一个事件,表明全局状态已更改(globalstateschanged
似乎合理)
然后,视图模型将订阅此事件,当您上面显示的setter引发此事件时,引发正确的PropertyChanged
事件,以便UI更新。如果viewmodel的主绑定属性是对全局状态对象的简单引用,则这应该只是一个事件