c# - 从 Xaml 运行异步方法

标签 c# wpf xaml mvvm prism

我如何从 Xaml(单击时)运行异步方法,通常我使用这样的东西:

xmlns:ii="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:eii="http://schemas.microsoft.com/expression/2010/interactions"

<Button Height="30" Width="200" Content="Save" >
                <ii:Interaction.Triggers>
                    <ii:EventTrigger EventName="Click">
                        <eii:CallMethodAction TargetObject="{Binding}" MethodName="Saveing"/>
                    </ii:EventTrigger>
                </ii:Interaction.Triggers>
            </Button>

保存方法:
public async Task Saveing(){...}

最佳答案

MVVM 的重点是将 UI 与处理分离。

绑定(bind)Command将按钮的属性设置为 ICommand ViewModel 中的(RelayCommand 或其他实现)项。该命令的相关方法可以在 async 中调用。方式。例如。

public ICommand SaveCommand {get; private set;}

private async Task SaveMethodAsync() 
{
    await dbService.SaveDataAsync(modelItem).ConfigureAwait(false);
    ...
}


public ViewModel()
{
    SaveCommand = new RelayCommand(async () =>
        await SaveMethodAsync().ConfigureAwait(false));
}

关于c# - 从 Xaml 运行异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40235511/

相关文章:

c# - 为什么我当前添加的列表框项目不可访问?

c# - Web API 和 C# 输出值

c# - 有什么命令可以立即更新用户界面吗?

wpf - XAML "Conditional"绑定(bind)

c# - 我的 VS 2013 应用程序应该包含哪个 C++ 合并模块

c# - 获取参数使用 FromUri 并验证此参数

c# - 基于复选框 WPF 的条件提示

c# - LoadCompleted 在 WPF WebBrowser 控件中未触发

c# - 'clr-namespace' URI 指的是未包含在程序集中的命名空间

c# - 可以重复 XAML block ,foreach 样式吗?