【发布时间】: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