小编jmi*_*has的帖子

iOS上的Xamarin表单如何设置页面的屏幕方向?

所以标题说明了一切.我关注iOS的这一点.我试图为我的基页"LandscapeContentPage"起诉一个自定义渲染器,希望强制它渲染为横向.我没有成功.

我试图使用一个hack,我在ViewDidAppear中找到了一个"假的"UIViewController,它覆盖了GetSupportedInterfaceOrientations,只返回Landscape.这种作品.肉看起来像这样:

var c = new LandscapeViewController();
c.View.BackgroundColor = UIColor.Cyan;

await PresentViewControllerAsync(c, false);
await DismissViewControllerAsync(false);
Run Code Online (Sandbox Code Playgroud)

如果我在Dismiss行设置断点,我可以在模拟器中看到视图确实变为横向,模拟器窗口实际上是自行旋转的.当我继续时,会抛出有关视图过渡的错误或ViewDidAppear再次触发,并且原始页面以纵向显示.

所以,我现在或多或少都迷失了.我尝试了很多不同的事情并没有成功.我无法弄清楚为什么没有开箱即用的机制.如果没有方向处理,这种昂贵的工具集/框架似乎是不完整

谢谢.

ios xamarin.forms

8
推荐指数
3
解决办法
8209
查看次数

调整PaintCode生成视图时如何保持宽高比?

我正在使用PaintCode为我的xamarin.ios应用程序生成样式包.我有一个简单的徽标,我从插图画家粘贴到PaintCode.一切都很好,我有一个框架,生成的绘制方法采用矩形.

有一次,我在故事板中调整了大小,但它没有保持宽高比,所以很明显徽标看起来不对,取决于UIView的大小.

如何在paintcode中添加变量/表达式,以便生成的代码在调整UIView大小时自动保持宽高比?

谢谢.

ios xamarin paintcode

7
推荐指数
1
解决办法
1627
查看次数

如何处理TaskCanceledException?

我有一个 xamarin 应用程序,它使用插件进行媒体访问来选择或拍照。

在我的中继命令中,我有这个:

try
{
    var mediaFile =
        await
            _mediaPicker.SelectPhotoAsync(new CameraMediaStorageOptions());

    using (var memoryStream = new MemoryStream())
    {
        mediaFile.Source.CopyTo(memoryStream);
        ...do image stuff here
    }
}
catch (TaskCanceledException taskCanceled)
{
    Debug.WriteLine(taskCanceled.Message);
}
Run Code Online (Sandbox Code Playgroud)

一般有没有更好的方法来处理任务取消异常?SelectPhotoAsync 不接受取消令牌。空的渔获物在这里好吗?用户取消操作完全没问题。

谢谢。

exception-handling task xamarin

5
推荐指数
1
解决办法
2076
查看次数

从 ASPNet Core 3.1 Api 控制器中的 ValidationProblem 获取traceId

我在我的 Xamarin 客户端应用程序上使用 Refit。当我调用我的 Api 并出现 ModelState/Validation 错误时,我将 a 返回ValidationProblem(ModelState)给我的客户端。Refit 然后抛出一个ValidationApiException. 异常中有一个traceId。

traceId我怎样才能在服务器端获取它以便我可以记录它?我希望能够在出现错误/问题时将客户端设备日志与服务器关联起来。

c# asp.net-core

5
推荐指数
1
解决办法
3750
查看次数

如何在TPL Dataflow中分支逻辑?

我是TPL数据流的新手,请原谅我,如果这是一个简单的问题.

我有一个输入缓冲区块,它采用基类.如何根据派生类型从那里分支到块?例如:

var inputBlock = new BufferBlock<EventBase>();
//if EventBase is Meeting then go to block X
//if EventBase is Appointment the go to block Y
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# task-parallel-library tpl-dataflow

4
推荐指数
1
解决办法
702
查看次数

使用LinkTo Predicate的TPL数据流阻止

我有一些块最终从TransformBlock转到基于LinkTo谓词的其他三个转换块之一.我正在使用DataflowLinkOptions传播完成.问题是当一个谓词被满足并且该块被启动时,我的其余管道继续.似乎管道应该等待此块首先完成.

这个代码是这样的:

var linkOptions = new DataflowLinkOptions {PropagateCompletion = true};
mainBlock.LinkTo(block1, linkOptions, x => x.Status = Status.Complete);
mainBlock.LinkTo(block2, linkOptions, x => x.Status = Status.Cancelled);
mainBlock.LinkTo(block3, linkOptions, x => x.Status = Status.Delayed);
mainBlock.LinkTo(DataflowBlock.NullTarget<Thing>(), linkOptions);
Run Code Online (Sandbox Code Playgroud)

现在,这不像我所说的那样工作,所以我发现获得我想要的行为的唯一方法是取出linkOptions并将以下内容添加到mainBlock的lambda中.

mainBlock = new TransformBlock<Thing,Thing>(input =>
{
    DoMyStuff(input);

    if (input.Status = Status.Complete)
    {
        mainBlock.Completion.ContinueWith(t => block1.Complete());
    }
    if (input.Status = Status.Cancelled)
    {
        mainBlock.Completion.ContinueWith(t => block2.Complete());
    }
    if (input.Status = Status.Delayed)
    {
        mainBlock.Completion.ContinueWith(t => block3.Complete());
    }

    return input;
});
Run Code Online (Sandbox Code Playgroud)

所以问题是,这是让这个工作的唯一方法吗?

顺便说一句,这已经在我的单元测试中运行,其中一个数据项通过它来尝试调试管道行为.每个块都经过多次单元测试单独测试.那么在我的管道单元测试中发生的事情就是在块执行完毕之前命中了assert,因此失败了.

如果我删除block2和block3链接并使用linkOptions调试测试,它可以正常工作.

c# unit-testing task-parallel-library

3
推荐指数
2
解决办法
2790
查看次数