我有一些Xaml對象的字符串表示形式,並且我想構建控件。我正在使用XamlReader.Parse函數來執行此操作。對於一個簡單的控制,如已經默認構造函數不採取任何參數按鈕能正常工作:將XamlReader用於沒有默認構造函數的控件
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);
這給了錯誤:
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處理。試圖用StylusPoints改造中風的XAML中它給出了同樣的錯誤:
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如何正確創建筆畫?
Thx!沒有意識到ObjectDataProvider .. – stiank81 2010-02-26 11:39:28
這不是真的。 XAML 2006不知道構造函數,但XAML 2009當然會。 – 2011-07-20 20:15:34