这个有点复杂。我正在尝试创建一个具有treeview和一些其他控件的用户控件,以创建一个对其他实现有用的可重用控件。
我遇到的问题是,我无法弄清楚如何将在控件之外定义的HierarchicalDataTemplate插入到控件内的treeview中。
在这里的控件之外是我的WPF。
<Grid>
<Grid.Resources>
<HierarchicalDataTemplate x:Key="HierarchicalDataTemplate" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</Grid.Resources>
<masterTreeUserControl:MasterTreeUserControl
HierarchicalDataTemplate="{StaticResource HierarchicalDataTemplate}"
ItemsSource="{Binding Path=SelectiveListViewModel.Items, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectiveListViewModel.SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
EnableAdd="False"
ItemType="{x:Type viewmodels:LocationItem}"
/>
</Grid>MasterTreeUserControl有一个HierarchicalDataTemplate DependencyProperty
HierarchicalDataTemplateProperty = DependencyProperty.Register("HierarchicalDataTemplate",typeof(HierarchicalDataTemplate),typeof(MasterTreeUserControl));
private static readonly DependencyProperty HierarchicalDataTemplateProperty;
public HierarchicalDataTemplate HierarchicalDataTemplate
{
get
{
return (HierarchicalDataTemplate)GetValue(HierarchicalDataTemplateProperty);
}
set
{
SetValue(HierarchicalDataTemplateProperty, value);
}
}到目前为止,控件中的Treeview看起来是这样的。
<TreeView Name="ItemListView"
Grid.Row="2"
Margin="0,5,0,0"
ItemsSource="{Binding Source={StaticResource ItemsCvs}}">在treeview的其他实现中,我通常会以类似的方式执行HierarchicalDataTemplate。
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="Hello"/>
</HierarchicalDataTemplate>
</TreeView.Resources>但是,由于HierarchicalDataTemplate位于依赖项属性中,因此我需要将其绑定到Treeview中。我已经浏览了一下互联网(并将继续这样做),但没有发现任何相关的东西。
如何将包含HierarchicalDataTemplate的依赖项属性注入treeview?
发布于 2016-10-04 12:19:13
以下应起作用:
PropertyChangedCallback添加到HierarchicalDataTemplateProperty中。唯一的问题是您的HierarchicalDataTemplate必须将DataType设置为模板类型。你应该以某种方式(验证等)来执行这一点。
https://stackoverflow.com/questions/39851075
复制相似问题