У меня есть несколько строковых представлений объектов Xaml, и я хочу создать элементы управления. Я использую функцию XamlReader.Parse для этого. Для простого элемента управления, такого как Button, который имеет конструктор по умолчанию, не принимающий никаких параметров, это прекрасно работает:
var buttonStr = "<Button xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">Text</Button>";
var button = (Button)XamlReader.Parse(buttonStr);
Однако, когда я пытаюсь сделать это, например, Инсульт управления не получается. Сначала попробуйте простой пустой ход:
var strokeStr = "<Stroke xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"></Stroke>";
var stroke = (Stroke)XamlReader.Parse(strokeStr);
Это дает ошибку:
Невозможно создать объект типа 'System.Windows.Ink.Stroke'. Ошибка CreateInstance, которая может быть вызвана отсутствием общедоступного конструктора по умолчанию для System.Windows.Ink.Stroke.
В определении Stroke я вижу, что для его создания требуется как минимум StylusPointsCollection. Я предполагаю, что это то, что говорит мне ошибка, хотя предполагал, что это будет обработано XamlReader. Попытка преобразовать Xaml из Stroke с StylusPoints в нем дает ту же ошибку:
var strokeStr =
"<Stroke xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">" +
"<Stroke.StylusPoints>" +
"<StylusPoint X=\"100\" Y=\"100\" />" +
"<StylusPoint X=\"200\" Y=\"200\" />" +
"</Stroke.StylusPoints>" +
"</Stroke>";
var stroke = (Stroke) XamlReader.Parse(strokeStr);
Что я делаю не так? Как мне сказать XamlReader, как правильно создать обводку?