2013-12-19 2 views
0

После нескольких часов исследований о том, как расширить класс Windows.UI.Xaml.Shapes.Shape, мне нужно спросить вас, ребята, если кто-нибудь может мне помочь.Как продлить Windows.UI.Xaml.Shapes.Shape в приложении Win Store (8.1)?

В принципе мне нужен обычный прямоугольник (так как он запечатан, я не могу расширить класс Windows.UI.Xaml.Shapes.Rectangle) и добавить к нему некоторых членов. Поэтому мне нужен класс, который рисует обычный прямоугольник с дополнительными членами.

+1

Если не продлить, почему не «Заверните»? –

+0

Я рассматривал этот подход, но мне нужно нарисовать класс, например. холст, который на самом деле не возможен с простой оберткой. Если у вас есть идея, как это сделать с помощью обертки, я с нетерпением жду этого. – aemaem

+0

Какова общая цель? Вы пытаетесь добиться определенного эффекта? Вероятно, есть другой путь. –

ответ

0

Фактический ответ на вопрос состоял в том, чтобы действительно расширить класс классом Shape (Windows.UI.Xaml.Shapes.Shape).

Тем не менее я нашел два решения моей проблемы, где оно не нужно использовать Shape класс:

  1. расширить класс по Path класса
  2. создать свой собственный элемент управления на основе обычного класса
0

Вы попробовали 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()); 
    } 
} 

окон выполнения C# проекция имеет кучу расширений, например, AsInputStream.

Для отличного примера использования расширений с Windows Runtime API см. this article in the MSDN Magazine.

+0

Если вы можете сказать мне, как расширить обычный класс «Прямоугольник» с помощью методов расширения, чтобы иметь дополнительные элементы (например, для хранения ассоциированных данных), в противном случае вы точно не прочитали вопрос. – aemaem

+0

Вы не указали, какие члены вы искали. Существует два типа членов класса: [переменные-члены и функции-члены] (https://en.wikipedia.org/wiki/Class_ (object-oriented_programming)). – kiewic

+0

-_- Однако, возможно, вам стоит взглянуть на свойство 'Tag'. Например: «rectangle.Tag =» вы можете присвоить любой тип здесь ». Итак, если вам нужно связать несколько типов, вы можете создать класс, который содержит все необходимые данные и назначить его «тегу». – kiewic