Заполнение ListView C# из List<string[]> wpf

146
30 августа 2019, 13:50

У меня на форме есть пустой ListView который будет заполняться каждый раз неизвестным зарание количеством колонок и строк.

xaml для создания ListView у меня следующий:

<ListView Name="OptimisationResultsTable" MouseDoubleClick="OptimisationResultsTable_MouseDoubleClick"/>

Имена колонок я получаю как List<string> Сами строки я получаю как List<string[]>

Я намериваюсь програмко создать колонки но не пойму как их сбиндить с List ?

Answer 1

В решении помогла вот эта ссылка:

Вот что получилось (демка) xaml:

<Window x:Class="TestEmptyLV.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestEmptyLV"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Button Click="Button_Click" Content="Fill In"/>
        <ListView MouseDoubleClick="ListView_MouseDoubleClick" Name="LV" Grid.Row="1" ItemsSource="{Binding}"/>
    </Grid>
</Window>

C#:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Data;
namespace TestEmptyLV
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            LV.DataContext = tb;
        }
        DataTable tb = new DataTable();
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            tb.Rows.Clear();
            tb.Columns.Clear();
            tb.Columns.Add(new DataColumn("Col1")
            {
                DataType = typeof(string)
            });
            tb.Columns.Add(new DataColumn("Col2")
            {
                DataType = typeof(string)
            });
            tb.Rows.Add(tb.NewRow());
            tb.Rows[0]["Col1"] = "Hellow";
            tb.Rows[0]["Col2"] = "World";
            tb.Rows.Add(tb.NewRow());
            tb.Rows[1]["Col1"] = "Hellow";
            tb.Rows[1]["Col2"] = "World twice";
            GridView gv = new GridView();
            foreach (DataColumn item in tb.Columns)
            {
                GridViewColumn gv_col = new GridViewColumn
                {
                    Header = item.ColumnName,
                    DisplayMemberBinding = new Binding(item.ColumnName)
                };
                gv.Columns.Add(gv_col);
            }
            LV.View = gv;
            LV.Items.Refresh();
        }
        private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (LV.SelectedItem is DataRowView rowView)
            {
                MessageBox.Show(string.Format("{0} {1}", rowView.Row["Col1"], rowView.Row["Col2"]));
            }
        }
    }
}
READ ALSO
Добавление роли в Wordpress

Добавление роли в Wordpress

После добавления кода, роль не появляется в списке выбораПодскажите, что не так? Может что-то мешает созданию новой роли? Так как код идеальный)

118
Ajax - многократное повторение кода на PHP

Ajax - многократное повторение кода на PHP

Есть код, на странице читает текстовый файлик и его содержимое выводится на страницу с автообновлениемТут же есть часть кода PHP, которая почему-то...

217
YII2 передача данных в main layout

YII2 передача данных в main layout

У меня в main layout есть часть кода которая должна получать массив с категориями или получать эти данные из БДСейчас я их передаю через actionIndex:...

139