2013-04-23 134 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