【问题标题】:WPF Treeview HierarchicalDataTemplate Drag and dropWPF Treeview HierarchicalDataTemplate 拖放
【发布时间】:2009-11-24 23:41:37
【问题描述】:

我在 wpf 中有一个树视图,它是使用下面的 xaml 构建的。这是一个结构良好的数据源,我在拖放时遇到了很多麻烦。我尝试了几种方法,都无济于事。谁能告诉我做这种事情的标准程序是什么?

<TreeView x:Name="_treeView" ItemsSource="{Binding}"   Grid.Row="0" Grid.Column="0">
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type Logic:Statement}"
                              ItemsSource="{Binding Path=PagedChildren}">
                    <TextBlock Text="{Binding StatementName}"/>
                </HierarchicalDataTemplate>

                <HierarchicalDataTemplate DataType="{x:Type Logic:StatementPage}"
                              ItemsSource="{Binding Path=Children}">
                    <WrapPanel>
                        <TextBlock Text="Page: "/>
                        <TextBlock Text="{Binding PageIndex}"/>
                    </WrapPanel>
                </HierarchicalDataTemplate>

                <DataTemplate DataType="{x:Type Logic:StatementFund}">
                    <Border  HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="Black" BorderThickness="2" CornerRadius="25">
                        <WrapPanel Margin="30 0 30 0" Width="150" Height="150" >
                            <StackPanel>
                                <TextBlock Text="Fund"/>
                                <WrapPanel>
                                    <TextBlock Text="Fund: "/>
                                    <TextBlock Text="{Binding FundNumber}"/>
                                </WrapPanel>
                                <WrapPanel Margin="10 0 0 0">
                                    <TextBlock Text="{Binding ColumnIndex}"/>
                                </WrapPanel>
                            </StackPanel>
                        </WrapPanel>
                    </Border>
                </DataTemplate>
                <DataTemplate DataType="{x:Type Logic:StatementPreviousCycle}">
                    <Border  HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="Black" BorderThickness="2" CornerRadius="25">
                        <WrapPanel Margin="30 0 30 0" Width="150" Height="150" >
                            <StackPanel>
                                <TextBlock Text="Previous Cycle"/>
                                <WrapPanel>
                                    <TextBlock Text="Fund: "/>
                                    <TextBlock Text="{Binding FundNumber}"/>
                                </WrapPanel>
                                <WrapPanel Margin="10 0 0 0">
                                    <TextBlock Text="{Binding ColumnIndex}"/>
                                </WrapPanel>
                            </StackPanel>
                        </WrapPanel>
                    </Border>
                </DataTemplate>

            </TreeView.Resources>
        </TreeView>

【问题讨论】:

    标签: wpf treeview drag hierarchicaldatatemplate


    【解决方案1】:

    我使用site 上的技术进行一般拖放。

    树视图可能会变得混乱,如果您想知道 preivewMouseDown 在哪个节点上,然后将其用作拖动项,您最终可以遍历可视树。有一些代码可以做到这一点here。另一种方法是子类化treeview和treeviewitem,然后您可以在每个树视图项上覆盖预览鼠标,并告诉您派生的父树视图,这可以将树视图项设置为选定项。

    【讨论】:

    • 问题出在 TreeView 本身,如何在鼠标按钮按下时获取 selectedNode(在选择节点之前)。此外,绑定使用看起来很正常的方式搞砸了。
    • 你在 wpftutorial.net 上列出的网站真的救了我。 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    相关资源
    最近更新 更多