У меня есть некоторые строковые представления объектов Xaml, и я хочу создать элементы управления. Для этого я использую функцию XamlReader.Parse. Для простого управления, такие как Button, который конструктор по умолчанию не принимает никаких параметров это работает отлично:Использование XamlReader для элементов управления, у которых нет конструктора по умолчанию
var buttonStr = "<Button xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">Text</Button>";
var button = (Button)XamlReader.Parse(buttonStr);
Однако, когда я пытаюсь сделать это, например, он не работает. Первый пытаются простой пустой Stroke:
var strokeStr = "<Stroke xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"></Stroke>";
var stroke = (Stroke)XamlReader.Parse(strokeStr);
Это дает ошибку:
Cannot create object of type 'System.Windows.Ink.Stroke'. CreateInstance failed, which can be caused by not having a public default constructor for 'System.Windows.Ink.Stroke'.
В определении инсульта я вижу, что он должен, по крайней мере StylusPointsCollection будет построен. Я предполагаю, что это то, о чем говорит мне ошибка, хотя и предполагал, что это будет обработано XamlReader. Попытка превратить Xaml инсульта с 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, как правильно создать Stroke?
Thx! Не знал об ObjectDataProvider .. – stiank81
Это не совсем верно. XAML 2006 не знает о конструкторах, но XAML 2009, безусловно, делает. –