| 

.NET C# Java Javascript Exception

2
Bekanntlich ist es nicht möglich in XAML eine Resource zu definieren, die dann mehrfach als Kind-Element verwendet wird. Beim Laden der XAML-Datei mittels XamlReader gibts dann folgende InvalidOperationException: "Specified element is already the logical child of another element. Disconnect it first."

Abhilfe könnte hier das Attribut x:Shared="false" schaffen, allerdings kann dieses in loose XAML nicht verwendet werden und genau das ist meine Anforderung.

Kennt jemand einen Workaround um in loose XAML eine Resource zu definieren, die dann mehrfach als Kind-Element verwendet werden kann?
News:
14.03.2011
ede938 21 2
1 Antwort
0
Folgende Markup-Extension erfüllt für mich den Zweck:

using System;
using System.IO;
using System.Windows;
using System.Windows.Markup;
using System.Xaml;
using XamlReader = System.Windows.Markup.XamlReader;
using XamlWriter = System.Windows.Markup.XamlWriter;

namespace MyMarkup
{
public class SharedResourceExtension : StaticResourceExtension
{
public SharedResourceExtension()
{

}

public SharedResourceExtension(object resourceKey)
: base(resourceKey)
{

}

public override object ProvideValue(IServiceProvider serviceProvider)
{
object value = base.ProvideValue(serviceProvider);
object clone = XamlClone(value);

return clone;
}

public static object XamlClone(object original)
{
if (original == null)
return null;

object clone;
using (var stream = new MemoryStream())
{
XamlWriter.Save(original, stream);
stream.Seek(0, SeekOrigin.Begin);


clone = XamlReader.Load(stream);
}

return clone;
}
}
}
14.03.2011
ede938 21 2

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH