【问题标题】:How to extend Windows.UI.Xaml.Shapes.Shape in Win Store App (8.1)?如何在 Win Store App (8.1) 中扩展 Windows.UI.Xaml.Shapes.Shape?
【发布时间】:2014-02-02 02:08:41
【问题描述】:

在对如何扩展Windows.UI.Xaml.Shapes.Shape 类进行了几个小时的研究之后,我想问问你们是否有人可以帮助我。

基本上我需要一个普通的矩形(因为它是密封的,我不能扩展Windows.UI.Xaml.Shapes.Rectangle 类)并向它添加一些成员。所以我需要一个类来绘制一个带有其他成员的普通矩形。

【问题讨论】:

  • 如果不扩展为什么不“包装”呢?
  • 我考虑过这种方法,但我需要在例如上绘制类使用简单的包装器实际上不可能的画布。如果您知道如何使用包装器来做到这一点,我期待着它。
  • 总体目标是什么?你想达到某种效果吗?可能还有其他方法。
  • 嗯,我正在开发一个基于 Windows 8.1(RT 应用程序)上的形状的有向图编辑器。目前我正在画布上移动矩形。为了向画布上的对象添加数据,我想创建自己的形状。

标签: c# xaml windows-store-apps shapes


【解决方案1】:

你试过Extension Methods吗?

public static class MyExtensions
{
    public static Size GetSize(this Windows.UI.Xaml.Shapes.Rectangle rectangle)
    {
        return rectangle.RenderSize;
    }
}

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        Rectangle rectangle = new Rectangle();
        Debug.WriteLine(rectangle.GetSize());
    }
}

Windows 运行时 C# 投影有许多扩展名,例如 AsInputStream

有关使用 Windows 运行时 API 的扩展的一个很好的例子,请参阅this article in the MSDN Magazine

【讨论】:

  • 如果你能告诉我如何使用扩展方法扩展普通的Rectangle 类以拥有额外的成员(例如用于存储关联数据) - 否则你没有完全阅读问题。
  • 您没有指定要查找的成员类型。有两种类成员:member variables and member functions
  • -_- 但是,也许您应该看看Tag 属性。例如:rectangle.Tag = "you can assign any type here"。因此,如果您需要关联多个类型,您可以创建一个包含您需要的所有数据的类并将其分配给Tag
  • 实际上Tag 属性似乎是正确的。我会试一试,然后告诉你结果。
【解决方案2】:

这个问题的实际答案是通过 Shape 类 (Windows.UI.Xaml.Shapes.Shape) 真正扩展一个类。

尽管如此,我还是找到了两个不需要使用 Shape 类的问题的解决方案:

  1. 通过Path 课程扩展您的课程
  2. 基于普通类创建自定义控件

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2014-08-05
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多