Как быстро скопировать UIElement? - PullRequest
0 голосов
/ 24 мая 2018

Мне нужно скопировать UIElement.Я искал решение и нашел этот пример:

string saved = XamlWriter.Save(canvas1); 
StringReader sReader = new StringReader(saved); 
XmlReader xReader = XmlReader.Create(sReader); 
Canvas newCanvas = (Canvas)XamlReader.Load(xReader); 
stackPanel2.Children.Add(newCanvas);

Он работал отлично.Мое приложение копирует длинный список UIElement с, и я обнаружил, что это занимает много времени.У кого-нибудь есть идеи как копировать UIElement с быстрее?

1 Ответ

0 голосов
/ 24 мая 2018

Вы можете использовать метод расширения для UIElement:

static class ExtMethods
{
    public static T GetCopy<T>(this T element) where T : UIElement
    {
        using (var ms = new MemoryStream())
        {
            XamlWriter.Save(element, ms);
            ms.Seek(0, SeekOrigin.Begin);
            return (T)XamlReader.Load(ms);
        }
    }
}

Использование :

Canvas copy = canvas1.GetCopy();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...