2012-08-14 72 views
0

我有一個樹視圖(左側)和wrappanel(右側)。從XMLDataProvider XML文件的樹狀視圖顯示的內容是這樣的:根據數據類型更改面板模板

<?xml version="1.0" encoding="utf-8"?> 
<Documents> 
    <DocFolder Name="Folder"> 
    <DocFolder DocFolderName="Subfolder"> 
     <DocItem DocItemName="item" /> 
    </DocFolder> 
    </DocFolder> 
</Documents> 

是否有可能以顯示WrapPanel不同的內容綁定取決於所選擇(DocFolder或DocItem)元素的類型樹視圖中選擇項目{Binding ElementName=treeView1, Path=SelectedItem}

回答

0

這樣的事情可能嗎?

<Control DataContext="{Binding ElementName=treeView1, Path=SelectedItem}" 
     Template="{Binding ElementName=treeView1, Path=SelectedItem, 
       Converter={StaticResource selectedItemToDataTemplateConverter}}" /> 

...和轉換器的代碼:

public class SelectedItemToDataTemplateConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, 
                 CultureInfo culture) 
    { 
     if (value is DocFolder) 
     { 
      return new DocFolderUC(); // Your user control to display DocFolders.. 
     } 
     else if (value is DocItem) 
     { 
      return new DocItemUC(); // Your user control to display DocItems.. 
     } 
     [...] 
+0

謝謝。它幫助了很多。 – Tomek 2012-08-24 08:46:58

0

如果你綁定的經潘內爾到所選擇的TreeView項的DataContext的,並使用了兩種類型的DataTemplates自動顯示不同的內容?即{Binding ElementName=treeView1, Path=SelectedItem.DataContext}

+0

Can WrapPanel是否有DataTemplate?我認爲這只是列表等。 – Tomek 2012-08-24 08:45:14