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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2015, 14:54   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Перемещение строк в DataGrid

Всем привет.
Можете подсказать как сделать, чтобы была возможность перемещение строк местами в DataGrid без использования DragonDrop

Код:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace WpfApplication4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
 
    public partial class MainWindow : Window
    {
        
        public MainWindow()
        {
            InitializeComponent();
            dg.Items.Add(new Row { first = "AA", second = "BB" });
            dg.Items.Add(new Row { first = "CC", second = "DD" });
            dg.Items.Add(new Row { first = "EE", second = "FF" });
            dg.Items.Add(new Row { first = "GG", second = "HH" });
            dg.Items.Add(new Row { first = "II", second = "JJ" });
            dg.Items.Add(new Row { first = "KK", second = "LL" });
            dg.Items.Add(new Row { first = "MM", second = "NN" });
            dg.Items.Add(new Row { first = "OO", second = "PP" });
            dg.Items.Add(new Row { first = "QQ", second = "RR" });
            dg.Items.Add(new Row { first = "SS", second = "TT" });
            dg.Items.Add(new Row { first = "UU", second = "VV" });
            dg.Items.Add(new Row { first = "WW", second = "XX" });
            dg.Items.Add(new Row { first = "YY", second = "ZZ" });
        }
 
 
        public class Row
        {
            public string first { get; set; }
            public string second { get; set; }
        }
    }
}
Код:
<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid x:Name="dg"  Width="500" Height="300" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="first" Width="100" Binding="{Binding first}"></DataGridTextColumn>
                <DataGridTextColumn Header="second" Width="100" Binding ="{Binding second}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
REztor вне форума Ответить с цитированием
Старый 28.02.2015, 15:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А с DragNDrop как? И чем не подходит?

Вместо добавления в Items лучше создать список (ObservableCollection, например) и его биндить к ItemsSource.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 28.02.2015 в 16:06.
Alex11223 вне форума Ответить с цитированием
Старый 28.02.2015, 17:28   #3
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А с DragNDrop как? И чем не подходит?

Вместо добавления в Items лучше создать список (ObservableCollection, например) и его биндить к ItemsSource.
Чем это лучше?
REztor вне форума Ответить с цитированием
Старый 28.02.2015, 17:38   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Например тем, что не придется кастовать к нужному типу при обращении к элементам. И список можно будет использовать не только в одном датагриде.

Ну и вообще в WPF популярно следовать паттерну MVVM для разделение данных, UI и бизнес логики.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.02.2015, 22:10   #5
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Так а как выполнить перемещение строк?
REztor вне форума Ответить с цитированием
Старый 28.02.2015, 22:13   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Вот в ObservableCollection записи поменяете местами, а в DataGrid все автоматически произойдет, binding обо всем позаботится
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 28.02.2015, 22:19   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так автор вроде хотел, чтоб пользователь менял, а не просто программно.

И я спрашивал как он это сделал драгндропом и чем не подошло.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 28.02.2015, 22:39   #8
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Ну не вижу принципиальных проблем)
Добавить две кнопочки: "Выше" и "Ниже", по клику на которые в ObservableCollection менять местами текущую запись (добавить свойство и забиндить на SelectedItem) и следующую или предыдущую.
Кстати, а чего на самом деле хотел автор?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 01.03.2015, 14:34   #9
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию

Хотел, чтобы пользователь мог менять строки местами, точно также как и столбцы
REztor вне форума Ответить с цитированием
Старый 01.03.2015, 14:50   #10
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