0

我们将使用 WPF 开发一个行为树编辑器。但是,我们对 WPF 完全陌生。如何生成代表树节点的形状组件,并且组件应该能够响应鼠标事件,如鼠标右键单击。

你对此有什么建议吗?

4

1 回答 1

0

HierarchicalDataTemplate您可以为您的树指定不同的。它们由类名自动选择。您还可以为您的基本类型指定一个。确保不要使用接口,而是使用真正的类。

因此,如果您对视图模型使用不同的类,则可以这样处理:

<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>

如果你想通过数据来区分不同的行为,你可以使用DataTriggerand Setter,但我推荐上面显示的方式。

于 2015-09-07T05:42:32.847 回答