У меня есть строковое представление XAML сетки так:Создание сетки из строки с помощью XamlReader
<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>
Что мне нужно сделать, это создать объект сетки из этой строки. Я пробовал много подходов, но до сих пор ближе всего находится код ниже:
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;
Однако XamlParsedException происходит о том, что корневой элемент отсутствует.
Есть ли у меня ошибка в коде XAML, который я просто не вижу? Или плохой подход?
Спасибо за ответ
Оказалось, что проблема была не в коде, который я опубликовал. Из более ранних разрешений я читал поток, чтобы увидеть, что внутри, и метод ReadToEnd() переместил начало потока в конец, поэтому XamlReader.Read() не получил полный контент ... – Gal
string content = " <Сетка .... "; Поток потока = новый MemoryStream (System.Text.ASCIIEncoding.ASCII.GetBytes (контент)); Считыватель StreamReader = новый StreamReader (поток); string whatsInside = reader.ReadToEnd(); объект objGrid = XamlReader.Load (поток); Grid myGrid = (Grid) objGrid; – Gal