2012-08-14 68 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