Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Да напишите уже что именно вы подразумеваете под драгндропом (как вы это делали) и чем не подошел такой вариант.
Alex11223 на форуме   Ответить с цитированием
Старый 09.03.2015, 19:37   #13
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 289
Репутация: 10
По умолчанию

Код:

 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, 19:37   #14
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 289
Репутация: 10
По умолчанию

Код:

Код:

<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, 19:49   #15
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,150
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Это что? Решение? Или долгожданный вариант с драгндропом? Если второе, то в чем проблема?
Alex11223 на форуме   Ответить с цитированием
Старый 09.03.2015, 20:30   #16
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 289
Репутация: 10
По умолчанию

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

Последний раз редактировалось REztor; 09.03.2015 в 20:35.
REztor вне форума   Ответить с цитированием
Старый 09.03.2015, 21:30   #17
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,150
Репутация: 3316

icq: 512-765
skype: alexp.frl
По умолчанию

Какую проблему вы пытаетесь решить поиском другого способа?
Alex11223 на форуме   Ответить с цитированием
Старый 09.03.2015, 21:31   #18
lomastr_
Участник клуба
 
Регистрация: 16.01.2015
Сообщений: 672
Репутация: 97
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


21:10.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru