在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;
它不起作用。
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=层次结构模板;