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, за да го използвате след това като елемент за плъзгане, можете да се разхождате във визуалното дърво. има код за това тук. друг начин е да подкласирате дървовиден изглед и treeviewitem, след което можете да замените визуализацията на мишката надолу върху всеки елемент от дървовидния изглед и да кажете на своя извлечен родителски изглед за него, което може да настрои елемента от дървовидния изглед да бъде избрания елемент.

person Aran Mulholland    schedule 25.11.2009
comment
Проблемът идва в самия TreeView, как да накарам избрания възел на бутона на мишката да бъде надолу (преди да бъде избран възелът). Освен това обвързването се прецаква по нормалните начини, които изглежда. - person Dested; 25.11.2009
comment
Уебсайтът, който посочихте на wpftutorial.net, наистина ме спаси. =) - person Benny Jobigan; 10.10.2010