2013-04-23 61 views
2

我试图加载foillowing XAML来工作:XamlReader.Parse似乎并不与HierarchicalDataTemplate

string template = "<HierarchicalDataTemplate ItemsSource=\"{Binding Items}\">" + 
        "<CheckBox Checked=\"CheckBox_Checked\"" + 
           " Tag=\"{Binding Champ1}\"" + 
           " Unchecked=\"CheckBox_Unchecked\">" + 
         "<CheckBox.Template>" + 
          "<ControlTemplate>" + 
           "<TextBlock Background=\"{Binding Path=Background," + 
                   "RelativeSource={RelativeSource AncestorType=CheckBox}}\"" + 
              "Text=\"{Binding Champ1}\" />" + 
          "</ControlTemplate>" + 
         "</CheckBox.Template>" + 
        "</CheckBox>" + 
       " </HierarchicalDataTemplate>"; 

this.ItemTemplate = (HierarchicalDataTemplate)XamlReader.Parse(template); 

我:在我的树视图的构造函数使用该

<HierarchicalDataTemplate ItemsSource="{Binding Items}"> 
    <CheckBox Checked="CheckBox_Checked" Tag="{Binding Champ1}" Unchecked="CheckBox_Unchecked"> 
     <CheckBox.Template> 
      <ControlTemplate> 
       <TextBlock Background="{Binding Path=Background, RelativeSource={RelativeSource AncestorType=CheckBox}}" Text="{Binding Champ1}" /> 
      </ControlTemplate> 
     </CheckBox.Template> 
    </CheckBox> 
</HierarchicalDataTemplate> 

米收到这个错误:

'Impossible de créer le type inconnu 'HierarchicalDataTemplate'.' numéro de ligne '1' et position de ligne '2'.

(我的机器正在法国配置,此消息是指:“无法创建UNK nown type HierarchicalDataTemplate“)。

有人有一个想法,为什么? 当直接写入xaml文件时,xaml片段完美工作。

谢谢!


编辑

我有一个简单的版本测试:

string template = "<HierarchicalDataTemplate ItemsSource=\"{Binding Items}\">" + 
           "<TextBox Text=\"Test\"/>"+ 
          " </HierarchicalDataTemplate>"; 

,问题是一样的。


EDIT2

好的问题是更广泛的,似乎无关的`HierarchicalDataTemplate”

string test = "<TextBox Text=\"Test\" />"; 
var ret = XamlReader.Parse(test); 

产生同样的错误...

回答

3

好的,我发现了问题。

作为John Bowen SAIT,第一个问题是事件处理程序至极不能被处理。 第二个问题是xaml中缺少主名称空间。

所以此代码的工作:

string template = "<HierarchicalDataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" ItemsSource=\"{Binding Items}\">" + 
        "<CheckBox Tag=\"{Binding Champ1}\" >" + 
         "<CheckBox.Template>" + 
          "<ControlTemplate>" + 
           "<TextBlock Background=\"{Binding Path=Background," + 
                   "RelativeSource={RelativeSource AncestorType=CheckBox}}\"" + 
              " Text=\"{Binding Champ1}\" />" + 
          "</ControlTemplate>" + 
         "</CheckBox.Template>" + 
        "</CheckBox>" + 
       " </HierarchicalDataTemplate>"; 

this.ItemTemplate = (DataTemplate)XamlReader.Parse(template); 
2

您不能使用事件处理程序与XamlReader,因为他们被要求位于XAML的代码隐藏,这显然不存在于解析的XAML中。

+0

我只是测试去除处理,并且错误信息仍然是相同的。 – Shimrod 2013-04-23 18:08:39

+0

事实上,我也使用更简单的版本进行了测试:'串模板= “” + “<文本框的文本= \” 测试\ “/>” + ““;'它仍然会失败并显示相同的错误消息。 – Shimrod 2013-04-23 18:09:57