【发布时间】: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.Point 在System.Windows 命名空间中不可用,因此无法构建视图模型。我认为这是因为我的视图模型是在纯 .NET Core 3 库中定义的——如果我安装预览 nuget 包Microsoft.WindowsDesktop.App,那么我将可以访问System.Windows 中的Point,并且应用程序将构建。
现在我很困惑,因为 ArcSegment 的文档说它支持 .NET Core 3.0 Preview 7 和 Point 的文档一样,我正在运行该版本的 .NET Core。那么,为什么我可以构建定义 ArcSegment 的 .NET Core 3 视图模型库,但是当我尝试为该 ArcSegment 指定 Point 时,我会遇到构建失败?
【问题讨论】:
-
有趣的是,文档并没有说明 .NET Core 3.0 支持结构
Point... 而不是ArcSegment如何与 .NET Core 兼容,这可能是文档中的错误? -
@Ackdari 是的,有点奇怪。已在 github 上提出问题:github.com/dotnet/wpf/issues/1496