1

Я пытаюсь создать DataTemplate в своем коде, и я наткнулся на this asnwer.Создание DataTemplate в коде не работает

Так что я просто копировать и редактировать код, но он терпит неудачу с этим исключением:

First-chance exception 'System.Windows.Markup.XamlParseException' in System.Windows.ni.dll Unknown parser error: Scanner 2147500037. [Line: 4 Position: 36]

Вот сгенерированный код XAML:

<DataTemplate 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:simplebackground="clr-namespace:Plugins.Backgrounds.SimpleBackground"> 
    <simplebackground:SimpleBackground/> 
</DataTemplate> 

и вот код XAML, что я в настоящее время используя эту страницу (эта работа):

<phone:PhoneApplicationPage 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:simpleBackground="clr-namespace:Namespace.Backgrounds.SimpleBackground" 
    x:Class="Namespace.Backgrounds.SimpleBackground.SimpleBackground" mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" d:DesignHeight="480" d:DesignWidth="480"> 

    <phone:PhoneApplicationPage.Resources> 
     <DataTemplate x:Key="DataTemplate"> 
      <simpleBackground:SimpleBackground /> 
     </DataTemplate> 
    </phone:PhoneApplicationPage.Resources> 
    ............. 
<phone:PhoneApplicationPage> 

Чтобы сгенерировать XAML, я использую этот код C# :

public static DataTemplate Create(Type type) 
{ 
    var templateString = "<DataTemplate\r\n" + 
         "xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\r\n" + 
         "xmlns:" + type.Name.ToLowerInvariant() + "=\"clr-namespace:" + type.Namespace + "\">\r\n" + 
         "<" + type.Name.ToLowerInvariant() + ":" + type.Name + "/>\r\n" + 
         "</DataTemplate>";    
    return XamlReader.Load(templateString) as DataTemplate; 
} 

Что в этом плохого? сообщения, за исключением является не то, что полезно :(

ответ

0

templateString в Create содержит элемент XamlReader не может найти вам придется добавить сборку, в которой элемент пребывает в пространстве имен:.

public static DataTemplate Create(Type type) 
{ 
    var templateString = 
     "<DataTemplate " + 
      "xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" " +         
      "xmlns:" + type.Name.ToLowerInvariant() + 
       "=\"clr-namespace:" + type.Namespace + 
       ";assembly=" + type.Assembly.GetName().Name + "\">" + 
     "<" + type.Name.ToLowerInvariant() + ":" + type.Name + "/>" + 
     "</DataTemplate>";    
    return XamlReader.Load(templateString) as DataTemplate; 
} 
+0

I Я попробую, но я создаю этот код в той же сборке, в которой у меня есть элемент, который я пытаюсь создать! – StepTNT