绑定UWP页面加载/加载到MVVM命令
最好用PRISM(Prism.Core 6.2,Prism.Windows 6.02)编写,但我也想知道如何将UWP中的Command与页面加载/加载事件绑定到没有Prism的普通MVVM。
在WPF中,它可以通过以下方式实现:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
在ViewModel中
public ICommand LoadedCommand { get; private set; } public TheViewModelConstructor() { LoadedCommand = new DelegateCommand(Load); } private async void Load() { // Do stuff }
但在UWP中,System.Windows.Interactivity不存在。 只需绑定
Loaded="{Binding LoadedCommand}"
要么
Loading="{Binding LoadingCommand}"
将得到编译错误“对象引用未设置对象的实例”。
我想这样做的原因是因为有一个异步方法需要在页面加载期间或之后完成(它不能在ViewModel构造函数中)。 我可以轻松地使用代码,但这不是MVVM。
如何正确绑定此命令?
UWP中也提供了行为。 只需添加Microsoft.Xaml.Behaviors.Uwp.Managed包即可开始使用。
Microsoft.Xaml.Behaviors.Uwp.Managed v1.x
Microsoft.Xaml.Behaviors.Uwp.Managed v2.x