gpt4 book ai didi

c# - 使用 MVVM 绑定(bind) UWP 页面加载/加载到命令

转载 作者:行者123 更新时间:2023-11-30 21:45:05 25 4
gpt4 key购买 nike

最好用 PRISM(Prism.Core 6.2、Prism.Windows 6.02)编写,但我也想知道如何在没有 Prism 的情况下使用普通 MVVM 将命令绑定(bind)到 UWP 中的页面加载/加载事件。

在 WPF 中,可以通过以下方式实现:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding LoadedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>

在 View 模型中

public ICommand LoadedCommand { get; private set; }
public TheViewModelConstructor()
{
LoadedCommand = new DelegateCommand(Load);
}
private async void Load()
{
// Do stuff
}

但在 UWP 中,System.Windows.Interactivity 并不存在。简单地与

绑定(bind)
Loaded="{Binding LoadedCommand}"

Loading="{Binding LoadingCommand}"

将得到编译错误“对象引用未设置对象的实例”。

我想这样做的原因是因为有一个异步方法需要在页面加载期间或之后完成(它不能在 ViewModel 构造函数中)。我可以很容易地使用代码隐藏来做到这一点,但这不是 MVVM。

如何正确绑定(bind)此命令?

最佳答案

UWP 中也提供行为。只需添加 Microsoft.Xaml.Behaviors.Uwp.Managed打包,您就可以开始了。

Microsoft.Xaml.Behaviors.Uwp.Managed v1.x

<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:InvokeCommandAction Command="{Binding ViewLoadedCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>

Microsoft.Xaml.Behaviors.Uwp.Managed v2.x

<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:EventTriggerBehavior.Actions>
<core:InvokeCommandAction Command="{Binding ViewLoadedCommand}" />
</core:EventTriggerBehavior.Actions>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>

关于c# - 使用 MVVM 绑定(bind) UWP 页面加载/加载到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40500115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com