сетка данных получает выбранные значения строк и ячеек в wpf c # - PullRequest
0 голосов
/ 03 июня 2018

Я хотел бы повторить код моего старого приложения Windows Forms на wpf, и у меня возникла проблема со ссылкой на datagridview.

Это пустой вид моего старого приложения:

private void button2_Click(object sender, EventArgs e)
    {
        if (DGV1.Rows.Count > 0 && DGV1.SelectedRows != null)
        {
            bool wart = true;
            for (int i = 0; i < listBox2.Items.Count; i++)
            {
                listBox2.SelectedIndex = i;
                int w1 = Int32.Parse(listBox2.SelectedItem.ToString());
                int w2 = Int32.Parse(DGV1.SelectedRows[0].Cells[0].Value.ToString());

                if (w1 == w2)
                {
                    wart = false;
                    break;
                }
            }
            if (wart)
            {
                listBox2.Items.Add(DGV1.SelectedRows[0].Cells[0].Value);
            }
        }
    }

Это недействительный вид моего нового приложения:

private void Button1_Click(object sender, RoutedEventArgs e)
    {
        IList rows = dataGrid1.SelectedItems;

        if(dataGrid1.SelectedItem != null)
        {
            bool wart = true;


            for (int i =0; i < listBox1.Items.Count; i++)
            {
                listBox1.SelectedIndex = i;
                object item = dataGrid1.SelectedItem;

                int w1 = Int32.Parse(listBox1.SelectedItem.ToString());
                int w2 = Int32.Parse(dataGrid1.SelectedCells[0].Column.GetCellContent(item).ToString()); <--- !!

                if(w1 == w2)
                {
                    wart = false;
                    break;
                }
            }

            if(wart)
            {
                listBox1.Items.Add(dataGrid1.SelectedCells[0]); <-- !!
            }
        }
    }

Приложение вылетает в секунду, если, где оно отображает: enter image description here

Идолжно быть: enter image description here

Пожалуйста, помогите: -)

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

dataGrid1.SelectedItem - это не просто object, он имеет конкретный тип и свойства, такие как Id, Tytul, Kategorie, Text

, которые необходимо выполнить для приведения кэтот конкретный тип и свойство доступа вместо попытки получить значение из низкоуровневых элементов пользовательского интерфейса, таких как DataGridCellInfo:

var item = (MyConcreteClass)dataGrid1.SelectedItem;
int w2 = item.Id;
0 голосов
/ 03 июня 2018

Вероятно, это должно быть так:

listBox1.Items.Add(dataGrid1.CurrentRow.Cells[0].Value);

Этот код взят из WinForms, но я предполагаю, что кодировка для wpf может не отличаться, так как оба находятся в c #.

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