Frage

Ich habe eine String-Darstellung eines XAML-Grid wie folgt aus:

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <Canvas Background="Yellow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <Label Content="textik" />
    </Canvas>
</Grid>

Was muss ich tun, ist ein Objekt Grid erstellen aus dieser Zeichenfolge. Ich habe versucht, viele Ansätze, aber bisher in der Nähe ist der folgende Code:

string content = "<Grid xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><Canvas Background=\"Yellow\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><Label Content=\"textik\" /></Canvas></Grid>";

// the string is created programatically, I just put it here to see what it looks like at the end of the process

Stream stream = new MemoryStream(System.Text.ASCIIEncoding.ASCII.GetBytes(content));

object objGrid = XamlReader.Load(stream);
Grid myGrid = (Grid) objGrid;

Doch die XamlParsedException tritt sagen, dass das Stammelement fehlt.

Muss ich einen Fehler in einem XAML-Code, dass ich einfach nicht sehen? Oder ist der Ansatz schlecht?

Danke für eine Antwort

War es hilfreich?

Lösung

Welche Version des Frameworks verwenden Sie? In 4 haben Sie zusätzliche Klassen in System.Xaml, die flexibler sind. Sie können System.Xaml.XamlServices.Load(stream); verwenden, um das genaue Grid-Objekt in dem losen XAML zu bekommen. Doch sowohl 4 und 3,5 in VS2010, Ihr genauen Code (in der zweiten Snippet) gibt das erwartete Ergebnis mit. Nicht sicher, was das Problem ist auf Ihrer Seite, aber es ist vielleicht nicht der Code, den Sie geschrieben.

Andere Tipps

Versuchen Sie auch xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" an die Wurzel Grid-Element hinzugefügt wird. Auch brauchen Sie nicht die xmlns wieder in Leinwand (aber nicht schaden - außer, dass die Saiten unnötig groß werden)

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top