我们将使用WPF开发行为树编辑器。 但是,我们对WPF来说是全新的。 如何生成表示树节点和组件的形状组件应该能够像点击鼠标右键那样响应鼠标事件。
你对此有什么建议吗?
答案 0 :(得分:0)
您可以为树指定不同的HierarchicalDataTemplate
。它们由classname自动选择。您也可以为基本类型指定一个。一定不要使用接口,而是使用真正的类。
因此,如果您为视图模型使用不同的类,则可以使用以下类似的东西:
<TreeView
ItemsSource="{Binding MyTreeVariable}"
SelectedItemChanged="MyTree_SelectedItemChanged">
<TreeView.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" DataType="{x:Type self:MyBaseType}">
<StackPanel Orientation="Horizontal">
<Rectangle Width="16" Height="16"/>
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" DataType="{x:Type self:MySpecialType1}">
<StackPanel Orientation="Horizontal">
<Ellipse Width="16" Height="16"/>
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}" DataType="{x:Type self:MySpecialType2}">
<StackPanel Orientation="Horizontal">
<!--- Triangle -->
<Polygon Points="50,0 100,100 0,100" Width="16" Height="16"/>
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
如果您想通过数据告诉不同的行为,可以使用DataTrigger
和Setter
,但我会推荐上面显示的方式。