我想在運行時使用XamlReader
加載DataTemplate,但它引發異常「前綴'x'不映射到名稱空間」。「前綴'x'不映射到名稱空間」
這是我傳遞給XamlReader
XML字符串:
<xm:ResourceDictionary
xmlns:xm="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:do="clr-namespace:MyLibrary.DataObjects;assembly=MyLibrary.DataObjects"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<xm:DataTemplate DataType="{x:Type do:ValidationResponse}">
<xm:StackPanel Orientation="Horizontal">
<xm:Label>MessageID</xm:Label>
<xm:TextBox Text="{Binding Path=MessageID}"/>
</xm:StackPanel>
</xm:DataTemplate>
</xm:ResourceDictionary>
這是閱讀它的代碼:
ResourceDictionary dictionary = XamlReader.Parse(myXamlString) as ResourceDictionary;
這裏的有趣的部分,如果我添加x:Key="ValidationResponseTemplate"
到的DataTemplate它解析沒有任何例外。但是,我無法保持這種方式,因爲我無法通過程序自己的.xaml
(在它在運行時獲取之前不知道模板)來指定DataTemplate。
x
命名空間在程序自己的.xaml
和我試圖解析的XML片段中定義。
總體目標:能夠提供新的DataTemplates,以便在運行時更改顯示外觀,並顯示客戶端在編譯時不知道的XML數據。