winforms для WPF Datagridview и datagrid - PullRequest
       0

winforms для WPF Datagridview и datagrid

0 голосов
/ 24 сентября 2018

Я пытаюсь заставить работать некоторый код в WPF, который я сделал в Winforms некоторое время назад.Я довольно новичок в WPF, поэтому я не уверен, как я могу это исправить.

Код Winforms C #:

bindingSource1.DataSource = dt.DefaultView;
            foreach (DataColumn col in dt.Columns)
            {
                DataGridViewTextBoxColumn dvc = new DataGridViewTextBoxColumn();
                dvc.ToolTipText = col.ColumnName;
                dvc.Name = col.ColumnName;
                dvc.HeaderText = col.ColumnName;
                dvc.DataPropertyName = col.ColumnName;
                dvc.Width = singleColWidth;
                DataGridView1.Columns.Add(dvc);
            }

Проблема, с которой я столкнулся, заключается в том, что «BindingSource1» не существует втекущий контекст.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

WPF не является WinForms.Чтобы заполнить DataGrid в WPF, вы устанавливаете или связываете его свойство ItemsSource с IEnumerable, например, dt.DefaultView.

Простой текстовый столбец представлен классом DataGridTextColumn, поэтому эквивалентный код в WPF будет выглядеть примерно так:

foreach (DataColumn col in dt.Columns)
{
    DataGridTextColumn dvc = new DataGridTextColumn();
    dvc.Name = col.ColumnName;
    dvc.Header = col.ColumnName;
    dvc.Binding = new Binding(col.ColumnName);
    dvc.Width = singleColWidth;
    DataGrid1.Columns.Add(dvc);
}
DataGrid1.ItemsSource = dt.DefaultView;

С учетом вышесказанного, вероятно, существуют более эффективные способы выполнениячто ты пытаешься сделать.Если вы серьезно относитесь к изучению WPF, вам действительно следует изучить шаблон проектирования Model-View-ViewModel (MVVM).Это рекомендуемый шаблон для использования при разработке приложений на основе XAML.

0 голосов
/ 24 сентября 2018

Часть проблемы, с которой вы здесь сталкиваетесь, заключается в полной разнице между мышлением WPF и WinForms.Не волнуйтесь, все бьют!

Цель WPF - использовать стиль разработки MVVM.Вы можете больше посмотреть, что это означает в целом, но для ваших целей это означает, что вы определяете свою структуру пользовательского интерфейса, свои базовые объекты данных и свой класс пользовательского интерфейса как отдельные компоненты.

Вы должны определить столбцы для своей таблицы данныхв XAML (или представлении конструктора) затем присоедините ваш ItemSource к сетке (которая обычно является набором элементов).Хороший ресурс для изучения этого - https://www.wpf -tutorial.com / datagrid-control / вводный / .

Я бы отступил от попытки перевести приложение, которое вы уже написали, иИдите шаг за шагом через учебный проект с сайтом.Вам нужно будет отказаться от многих привычек WinForms, которые являются большими проблемами в WPF-земле.

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