Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2015, 17:06   #11
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
также это как? мышкой? так это то чего вы не хотите
Создайте DataGrid поменяйте местами там столбцы, вот также я хочу менять местами строки
REztor вне форума Ответить с цитированием
Старый 01.03.2015, 17:44   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да напишите уже что именно вы подразумеваете под драгндропом (как вы это делали) и чем не подошел такой вариант.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.03.2015, 18:37   #13
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Код:
 public class Row
    {
        public string number { get; set; }
        public string letter { get; set; }
    }

    public class ProductCollection : ObservableCollection<Row>
    {
        public ProductCollection()
        {
            Add(new Row { number = "1", letter = "A" });
            Add(new Row { number = "2", letter = "B" });
            Add(new Row { number = "3", letter = "C" });
            Add(new Row { number = "4", letter = "D" });
            Add(new Row { number = "5", letter = "E" });
            Add(new Row { number = "6", letter = "F" });
            Add(new Row { number = "7", letter = "G" });
            Add(new Row { number = "8", letter = "H" });
            Add(new Row { number = "9", letter = "I" });
            Add(new Row { number = "10", letter = "J" });
            Add(new Row { number = "11", letter = "K" });
            Add(new Row { number = "12", letter = "L" });
            Add(new Row { number = "13", letter = "M" });
            Add(new Row { number = "14", letter = "N" });
            Add(new Row { number = "15", letter = "O" });
            Add(new Row { number = "16", letter = "P" });
            Add(new Row { number = "17", letter = "Q" });
            Add(new Row { number = "18", letter = "R" });
            Add(new Row { number = "19", letter = "S" });
            Add(new Row { number = "20", letter = "T" });
            Add(new Row { number = "21", letter = "U" });
            Add(new Row { number = "22", letter = "V" });
            Add(new Row { number = "23", letter = "W" });
            Add(new Row { number = "24", letter = "X" });
            Add(new Row { number = "25", letter = "Y" });
            Add(new Row { number = "26", letter = "Z" });
        }
    }
Код:
namespace WpfApplication7
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public delegate Point GetPosition(IInputElement element);
        int rowIndex = -1;
        public MainWindow()
        {
            InitializeComponent();
            dg.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(productsDataGrid_PreviewMouseLeftButtonDown);
            dg.Drop += new DragEventHandler(productsDataGrid_Drop);
        }
        void productsDataGrid_Drop(object sender, DragEventArgs e)
        {
            if (rowIndex < 0)
                return;
            int index = this.GetCurrentRowIndex(e.GetPosition);
            if (index < 0)
                return;
            if (index == rowIndex)
                return;
            if (index == dg.Items.Count - 1)
            {
                MessageBox.Show("This row-index cannot be drop");
                return;
            }
            ProductCollection productCollection = Resources["List"] as ProductCollection;
            Row changedProduct = productCollection[rowIndex];
            productCollection.RemoveAt(rowIndex);
            productCollection.Insert(index, changedProduct);
        }
        void productsDataGrid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            rowIndex = GetCurrentRowIndex(e.GetPosition);
            if (rowIndex < 0)
                return;
            dg.SelectedIndex = rowIndex;
            Row selectedEmp = dg.Items[rowIndex] as Row;
            if (selectedEmp == null)
                return;
            DragDropEffects dragdropeffects = DragDropEffects.Move;
            if (DragDrop.DoDragDrop(dg, selectedEmp, dragdropeffects)
                                != DragDropEffects.None)
            {
                dg.SelectedItem = selectedEmp;
            }
        }
        private bool GetMouseTargetRow(Visual theTarget, GetPosition position)
        {
            Rect rect = VisualTreeHelper.GetDescendantBounds(theTarget);
            Point point = position((IInputElement)theTarget);
            return rect.Contains(point);
        }
        private DataGridRow GetRowItem(int index)
        {
            if (dg.ItemContainerGenerator.Status
                    != GeneratorStatus.ContainersGenerated)
                return null;
            return dg.ItemContainerGenerator.ContainerFromIndex(index)
                                                            as DataGridRow;
        }
        private int GetCurrentRowIndex(GetPosition pos)
        {
            int curIndex = -1;
            for (int i = 0; i < dg.Items.Count; i++)
            {
                DataGridRow itm = GetRowItem(i);
                if (GetMouseTargetRow(itm, pos))
                {
                    curIndex = i;
                    break;
                }
            }
            return curIndex;
        }
    }
}
REztor вне форума Ответить с цитированием
Старый 09.03.2015, 18:37   #14
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Код:
Код:
<Window 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication7"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
        x:Class="WpfApplication7.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <local:ProductCollection x:Key="List"/>
    </Window.Resources>
    <Grid DataContext="{Binding Source={StaticResource List}}">
        <DataGrid d:LayoutOverrides="Width" Margin="0,28,0,0" Name="dg"
                  AutoGenerateColumns="False" ItemsSource="{Binding}" 
                  SelectionMode="Extended" ColumnWidth="*" AllowDrop="True" >
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding number}" Header="Number"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding letter}" Header="Letter"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
REztor вне форума Ответить с цитированием
Старый 09.03.2015, 18:49   #15
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это что? Решение? Или долгожданный вариант с драгндропом? Если второе, то в чем проблема?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.03.2015, 19:30   #16
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Это что? Решение? Или долгожданный вариант с драгндропом? Если второе, то в чем проблема?
Да, это с DragonDrop. Хотел бы знать другой способ решения этой задачи

Последний раз редактировалось REztor; 09.03.2015 в 19:35.
REztor вне форума Ответить с цитированием
Старый 09.03.2015, 20:30   #17
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какую проблему вы пытаетесь решить поиском другого способа?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.03.2015, 20:31   #18
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

вам тут уже предлагали другой
lomastr_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перемещение примечаний при удалении строк Jaroslav Microsoft Office Excel 7 04.10.2014 14:33
перемещение строк в dbedit shadowmaker Общие вопросы Delphi 5 10.02.2011 16:25
Перемещение строк в таблице (Access) chinara БД в Delphi 6 25.11.2010 13:46
Перемещение по ячейкам строк в DBGrid .Phoenix БД в Delphi 10 25.09.2009 14:32