在WPF中以编程方式将DataTemplateSelector与树视图项绑定

本文关键字:视图 绑定 DataTemplateSelector WPF 编程 方式 | 更新日期: 2023-09-27 17:58:35

我无法通过编程方式将数据模板选择器与树视图项绑定。这里我已经创建了参数化的数据模板选择器,这不能与XAML中的树视图绑定。这是数据模板选择器的代码

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

尝试过的方法:MyTemplate obj=新的MyTemplate(viewModel)treeviewList。ItemTemplateSelector=obj;

它不起作用。

在WPF中以编程方式将DataTemplateSelector与树视图项绑定

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

这是一个很好的例子,如何使事物具有可绑定性和更动态的

HierarchicalDataTemplate hierarchicalTemplate=new HierarchialDataTemplate();

        // 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=层次结构模板;