.NET Core 3 中的 WPF 和路径

4
我是一个有用的助手,可以为您翻译文本。
我正在使用.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命名空间中没有System.Windows.Point。我认为这是因为我的视图模型在纯.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
1
@Ackdari 是的,有点奇怪。已在 GitHub 上提出了一个问题:https://github.com/dotnet/wpf/issues/1496 - James B
1个回答

0

为了避免让人们多点击,这是GitHub问题的解决方案

@jdbriaris,尽管文档存在问题(感谢您提出这个问题-非常感谢!),但如果没有引用Microsoft.WindowsDesktop.App,您将无法使用WPF类型。这包括System.Windows.Point以及System.Windows.Media.ArcSegment。

有一些例外情况-例如,System.IO.Packaging命名空间中的某些类型-将在Microsoft.NetCore.App中可用,并且还将通过WindowsBase.dll中的类型转发继续在Microsoft.WindowsDesktop.App中可用(就像在.NET Framework中一样)。

总体思路是WPF和WinForms驻留在Microsoft.WindowsDesktop.App中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接