Pregunta

Tengo una representación de cadena de una cuadrícula XAML como esto:

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

Lo que tengo que hacer es crear un objeto de cuadrícula de esta cadena. He intentado un montón de enfoques, pero hasta ahora el más cercano es el código de abajo:

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;

Sin embargo, el XamlParsedException ocurre decir que el elemento raíz no se encuentra.

¿Tengo un error en un código XAML que yo no puedo ver? ¿O es el enfoque malo?

Gracias por la respuesta

¿Fue útil?

Solución

¿Qué versión del marco está usando? En 4 tiene clases adicionales en System.Xaml que son más flexibles. Puede utilizar System.Xaml.XamlServices.Load(stream); para obtener el objeto de cuadrícula exacta en el XAML suelto. Sin embargo, el uso de ambos 4 y 3,5 en VS2010, el código exacto (en el segundo fragmento) devuelve el resultado esperado. No está seguro de cuál es el problema de su lado, pero puede que no sea el código que envió.

Otros consejos

Pruebe también añadiendo xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" al elemento de rejilla raíz. También usted no necesita los xmlns nuevo en mano (pero tampoco es malo - excepto que sus cadenas se convierten innecesariamente grande)

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top