2012-08-14 3 views
0

У меня есть древовидная структура (слева) и обертка (справа). Treeview отображения контента из XMLDataProvider файла XML выглядит следующим образом:Изменение шаблона панели в зависимости от типа данных

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

Можно ли отображать разное содержание в WrapPanel привязываться к TreeView выбранный товар {Binding ElementName=treeView1, Path=SelectedItem} в зависимости от типа элемента, выбранного (DocFolder или DocItem)?

ответ

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

0

Что делать, если вы связаны искривления Pannel к DataContext выбранного элемента TreeView, и использовали два типизированных DataTemplates автоматически отображать различное содержание? То есть {Binding ElementName=treeView1, Path=SelectedItem.DataContext}

+0

Может ли WrapPanel иметь DataTemplate? Я думал, что это только для списков и т. Д. – Tomek

Смежные вопросы