【问题标题】:.NET Core 3 WPF and Paths.NET Core 3 WPF 和路径
【发布时间】:2019-12-09 06:41:42
【问题描述】:

我正在使用 .NET Core 3 及其在 Visual Studio 2019 上对 WPF 的支持。我创建了一个画布并想从代码中绘制一个几何图形。我最初试图通过将 Canvas 的 Path Data 依赖属性绑定到我的 ViewModel 中的 PathGeometry 来做到这一点,即

<Path Data="{Binding PathGeometry}"/>

然后在我的 ViewModel 中设置 PathGeometry,类似于

    public class MyViewModel : ViewModelBase
    {   

        public PathCanvasViewModel()
        {   
            var arcSegment = new ArcSegment
            {
                // INVALID in .NET Core 3 lib
                Point = new System.Windows.Point()
            };

            var pathFigure = new PathFigure();
            pathFigure.Segments.Add(arcSegment);

            PathGeometry = new PathGeometry();
        }

        public PathGeometry PathGeometry { get; }
    }

但是,由于System.Windows.PointSystem.Windows 命名空间中不可用,因此无法构建视图模型。我认为这是因为我的视图模型是在纯 .NET Core 3 库中定义的——如果我安装预览 nuget 包Microsoft.WindowsDesktop.App,那么我将可以访问System.Windows 中的Point,并且应用程序将构建。

现在我很困惑,因为 ArcSegment 的文档说它支持 .NET Core 3.0 Preview 7Point 的文档一样,我正在运行该版本的 .NET Core。那么,为什么我可以构建定义 ArcSegment 的 .NET Core 3 视图模型库,但是当我尝试为该 ArcSegment 指定 Point 时,我会遇到构建失败?

【问题讨论】:

  • 有趣的是,文档并没有说明 .NET Core 3.0 支持结构 Point... 而不是 ArcSegment 如何与 .NET Core 兼容,这可能是文档中的错误?
  • @Ackdari 是的,有点奇怪。已在 github 上提出问题:github.com/dotnet/wpf/issues/1496

标签: c# .net wpf .net-core


【解决方案1】:

为了拯救人们点击这里是来自 GitHub 问题的解决方案

@jdbriaris,尽管存在文档问题(谢谢 让我们注意到这一点 - 非常感谢!),你 不引用将无法使用 WPF 类型 Microsoft.WindowsDesktop.App。这包括 System.Windows.Point,如 以及 System.Windows.Media.ArcSegment。

这种普遍性有一些例外 - 例如,某些类型 System.IO.Packaging 命名空间 - 将在 Microsoft.NetCore.App,并且还将继续在 Microsoft.WindowsDesktop.App 通过 WindowsBase.dll 中的类型转发 (就像他们在 .NET Framework 中使用的那样)。

一般的想法是 WPF 和 WinForms 驻留在 Microsoft.WindowsDesktop.App。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多