我正在尝试加载foillowing xaml:
<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>
在我的treeview的构造函数中使用它:
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);
我收到了这个错误:
'Impossibledecréerletype inconnu'HierarchicalDataTemplate'。' numérodeligne'1'et position de ligne'2'。
(我的机器配置为法语,此消息表示:“无法创建未知类型HierarchicalDataTemplate”)。
有人知道为什么吗? 当直接在xaml文件中编写时,xaml代码段可以正常工作。
谢谢!
我有一个简单版本的测试:
string template = "<HierarchicalDataTemplate ItemsSource=\"{Binding Items}\">" +
"<TextBox Text=\"Test\"/>"+
" </HierarchicalDataTemplate>";
问题是一样的。
好的问题更广泛,似乎与`HierarchicalDataTemplate'
无关string test = "<TextBox Text=\"Test\" />";
var ret = XamlReader.Parse(test);
产生同样的错误......
答案 0 :(得分: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);
答案 1 :(得分:2)
您不能将事件处理程序与XamlReader
一起使用,因为它们必须位于XAML的代码隐藏中,这在解析的XAML中显然不存在。