Как использовать мульти перетаскивание выбора в wpf? - PullRequest
0 голосов
/ 10 марта 2020

я хочу, чтобы пользователь выбрал строку буксировки и перетащил мой код xalm в wpf

<TreeView Name="tvMain"  FontSize="14"  Grid.Row="2" Background="#FFF9F9F9"  
                           AllowDrop="True"                    
                    PreviewMouseLeftButtonDown="TreeViewItem_PreviewMouseLeftButtonDown"
                    PreviewMouseMove="TreeViewItem_PreviewMouseMove"
                    SelectedItemChanged="tvMain_SelectedItemChanged">
                <TreeView.ItemContainerStyle>
                    <Style TargetType="{x:Type TreeViewItem}">
                        <EventSetter Event="MouseDoubleClick" Handler="TreeView_MouseDoubleClick" />
                        <EventSetter Event="MouseRightButtonDown" Handler="TreeView_MouseRightClick" />
                    </Style>
                </TreeView.ItemContainerStyle>
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate >
                        <StackPanel Orientation="Horizontal">
                            <Image Margin="2" Width="14" Height="14" Source="{Binding Path=ImageUrl}" HorizontalAlignment="Right" VerticalAlignment="Center" ></Image>
                            <TextBlock  Margin="2" Text="{Binding Path=Name}"  MinWidth="280" Width="{Binding Path=SizeOfName}" VerticalAlignment="Center"  />
                            <TextBlock Name="lb_params" Text="{Binding Params}" Width="{Binding Path=SizeParams}" VerticalAlignment="Center" TextAlignment="Center"/>

                        </StackPanel>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>

код позади

Point startPoint;
        private void TreeViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            startPoint = e.GetPosition(null);
        }
        private void TreeViewItem_PreviewMouseMove(object sender, MouseEventArgs e)
        {

            Point mousePos = e.GetPosition(null);
            Vector diff = startPoint - mousePos;
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                TreeView treeView = sender as TreeView;
                if (treeView.SelectedItem != null)
                {
                    DataObject dragData = new DataObject("myFormat", treeView.SelectedItem);
                    DragDrop.DoDragDrop(treeView, dragData, DragDropEffects.Move);
                }
            }
        }
        private static T FindAnchestor<T>(DependencyObject current)
            where T : DependencyObject
        {
            do
            {
                if (current is T)
                {
                    return (T)current;
                }
                current = VisualTreeHelper.GetParent(current);
            }
            while (current != null);
            return null;
        }

теперь пользователь может выбрать один элемент в виде дерева, но я хочу выбрать элемент буксировки для перетаскивание. Я хочу, чтобы пользователь выбрал 2 элемента для перетаскивания. Я хочу просмотреть дерево с множественным выбором

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...