【问题标题】:Share inkCanvas issue in mvvm for uwp在 mvvm 中为 uwp 分享 inkCanvas 问题
【发布时间】:2022-01-17 16:02:48
【问题描述】:

我在使用 WTS 的 mvvm 工具包中有一个 UWP 应用程序,我共享 inkCanvas 的问题是我在以下内容中遇到错误:没有给出与所需的形式参数“数据”相对应的参数ShareSourceData.ShareDataService(DataPackage)' InkPen ViewModelsInkSmartCanvasViewModel.cs ShareDataAsync代码c#中提示错误

InkSmartCanvasViewModel.cs

私有异步任务 ShareDataAsync() {

    await  _shareSourceData?.ShareDataService();
}

public ICommand ShareCommand => shareCommand ?? (shareCommand = new RelayCommand(async () => await ShareDataAsync()));

ShareDataSource.cs

存储文件文件;私有只读 InkCanvas _inkCanvas; private RandomAccessStreamReference strokeStream;

public async Task ShareDataService(DataPackage data)
{
    file = await ApplicationData.Current.LocalFolder.CreateFileAsync("MyPen.png",
       Windows.Storage.CreationCollisionOption.ReplaceExisting);

    DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += DataTransferManager_DataRequested;

    DataTransferManager.ShowShareUI();

}

private async void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
    DataRequest request = args.Request;
    DataRequestDeferral deferral = request.GetDeferral();
    using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
    {
        await _inkCanvas.InkPresenter.StrokeContainer.SaveAsync(stream);
        strokeStream = RandomAccessStreamReference.CreateFromFile(file);
    }

    request.Data.SetBitmap(strokeStream);
    request.Data.Properties.Title = "InkPen";
    request.Data.Properties.Description = "send InkPen";

    await ShareDataService(args.Request.Data);
    deferral.Complete();

}

}

【问题讨论】:

  • 基于文档-Save ink strokes to a file-GIF 是唯一支持保存墨迹数据的文件格式。请尝试使用 Gif 保存笔画,然后重试。
  • 我在 InkSmartCanvasViewModel.cs 中遇到的问题
  • 错误信息中提到No argument has been given对应于所需的形参'data',你的问题的原因是你没有传递一个正确的参数到DataRequest.data property
  • 然后在 _shareSourceData?。 sharedataservice() 将具有正确的参数,并且在正确的 public iCommand
  • 问题应该出在DataRequest.data property 而不是iCommand

标签: xaml uwp


【解决方案1】:

问题是您使用 0 个参数调用 ShareSourceData.ShareDataService,而函数声明它需要一个类型为 DataPackage 的参数。由于参数data 似乎没有被使用,你应该可以从函数中删除参数,即使用这个函数声明:

public async Task ShareDataService()
{
...
}

【讨论】:

  • 可以是这样的。 公共异步任务 ShareDataService() { .. await _shareDataSource?.ShareDataService(Datapackage data); }
  • 不确定你的意思。您在InkPen ViewModelsInkSmartCanvasViewModel.cs 文件中遇到的错误是您正在调用一个需要参数data 的方法。由于该函数不需要该参数,因此您可以从函数中删除该参数。
  • 那么参数的日期从它必须被删除的地方开始。根据功能可以 ShareSourceData.cs 。
  • 你到底是什么意思?
  • 如果问题出在函数中,则故障可能是 ShareDataSource.cs
猜你喜欢
  • 2017-05-14
  • 2018-01-16
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多