Domanda

ho una rappresentazione di stringa di una griglia XAML in questo modo:

<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>

Che cosa devo fare è di creare un oggetto griglia di questa stringa. Ho provato un sacco di approcci, ma finora il più vicino è il codice qui sotto:

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;

Tuttavia, la verifica XamlParsedException dicendo che l'elemento principale è manca.

Devo un errore in un codice XAML che non riesco proprio a vedere? O è il cattivo approccio?

Grazie per una risposta

È stato utile?

Soluzione

Quale versione del framework stai usando? In 4 si dispone di ulteriori classi in System.Xaml che sono più flessibili. È possibile utilizzare System.Xaml.XamlServices.Load(stream); per ottenere l'oggetto esatto griglia in XAML sciolti. Tuttavia, utilizzando sia 4 e 3,5 in VS2010, il codice esatto (nel secondo frammento di) restituisce il risultato previsto. Non so quale sia il problema è dalla vostra parte, ma potrebbe non essere il codice che avete inviato.

Altri suggerimenti

Prova anche l'aggiunta xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" alla radice elemento Grid. Inoltre non è necessario xmlns di nuovo a tela (ma non fa male - se non che le corde diventano inutilmente grande)

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top