WPF Treeview HierarchicalDataTemplate Перетаскивание

У меня есть древовидное представление в 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>

person Dested    schedule 24.11.2009    source источник


Ответы (1)


я использую методы на этом сайте для обычного перетаскивания.

древовидное представление может стать беспорядочным, если вы хотите знать, на каком узле вы preivewMouseDown находитесь, чтобы затем использовать его в качестве элемента перетаскивания, вы можете в конечном итоге пройтись по визуальному дереву. для этого есть некоторый код здесь. другой способ - создать подкласс древовидного представления и древовидного элемента, тогда вы можете переопределить мышь предварительного просмотра на каждом элементе древовидного представления и сообщить об этом производному родительскому древовидному представлению, которое может установить элемент древовидного представления как выбранный элемент.

person Aran Mulholland    schedule 25.11.2009
comment
Проблема возникает в самом TreeView: как мне получить выбранный узел при нажатии кнопки мыши (до того, как узел будет выбран). Кроме того, привязка закручивается обычными способами. - person Dested; 25.11.2009
comment
Веб-сайт, который вы указали на wpftutorial.net, действительно спас меня. знак равно - person Benny Jobigan; 10.10.2010