2016-07-25 2 views
0

Я не могу связать селектор шаблонов данных с программным обеспечением древовидной структуры. Здесь я создал параметризованный селектор шаблонов данных, это не может быть связано с древовидным представлением в XAML. Здесь код селектор шаблона данныхBinding DataTemplateSelector с элементом treeview программно в WPF

public class MyTemplate : DataTemplateSelector 
    { 

     private IVM_ManyToOneMapping _viewModel; 
     public MyTemplate(IVM_ManyToOneMapping viewModel) 
     { 
      _viewModel = viewModel; 
     } 
    } 

пытался подход: MyTemplate OBJ = новый MyTemplate (ViewModel) treeviewList.ItemTemplateSelector = OBJ;

не работает.

+0

, пожалуйста, вы можете показать еще код – suulisin

ответ

0

Это не то, как DataTemplateSelector работы:

Вот в примере:

public class TemplateSelector : DataTemplateSelector 
{ 

    //You override this function to select your data template based in the given item 
    public override System.Windows.DataTemplate SelectTemplate(object item, 
        System.Windows.DependencyObject container) 
    { 
     if(item is MyViewModel1) 
      return DataTemplate1; 
     if(item is MyViewModel2) 
      return DataTemplate2; 
     return base.SelectTemplate(item, container); 
    } 
} 

Но если вы уже в коде позади, почему бы вам нужен DataTemplateSelector?

This хороший пример, как получить вещи Привязываемых и более динамичного

+0

Спасибо за ответ. Я хотел связать селектор шаблонов данных дерева с кодом (не через XAML). Я могу добиться этого спасибо .. :) –

0

HierarchicalDataTemplate hierarchicalTemplate = новый HierarchicalDataTemplate();

 // create TreeViewItem. 
     FrameworkElementFactory treeViewItem = new FrameworkElementFactory(typeof(TreeViewItem)); 
     treeViewItem.SetBinding(TreeViewItem.ItemsSourceProperty, new Binding("GroupList")); 
     treeViewItem.SetValue(TreeViewItem.ItemTemplateSelectorProperty, 
           new TreeViewItemTemplateSelector(_viewModel)); 

     hierarchicalTemplate.VisualTree = treeViewItem; 

treeviewList.itemTemplate = hierarchicalTemplate;

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