DataGrid, BindingExpression. Проблема с выводом

140
12 апреля 2019, 18:20

Имеется Dictionary<string, List<bool>> AllOperations. Нужно данные вывести в DataGrid .

            DataTable TruthTable = new DataTable();
        foreach (var item in AllOperations)
        {
            TruthTable.Columns.Add(item.Key);
        }
        for (int i = 0; i < Operations.Count; i++)
        {
            DataRow workRow = TruthTable.NewRow();
            List<string> tempRow = new List<string>();
            foreach (var item in AllOperations)
            {
                tempRow.Add(item.Value.ElementAt(i).ToString());
            }
            TruthTable.Rows.Add(tempRow.ToArray());
        } 
        DataView TruthTableView = TruthTable.DefaultView;
        return TruthTableView;

По итогу не все столбцы заполняются

, а в выводе находится следующее

System.Windows.Data Error: 40 : BindingExpression path error: '(a∨(d∨(¬c∨b)))' property not found on 'object' ''DataRowView' (HashCode=22802807)'. BindingExpression:Path=(a∨(d∨(¬c∨b))); DataItem='DataRowView' (HashCode=22802807); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')

Собственно, почему часть словаря выводится адекватно и как решить эту проблему?

Выходная таблица по своей структуре должна быть такой

Answer 1

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        SetData();
        this.DataContext = this;
    }
    public Dictionary<string, List<bool>> Names { get; set; }
    private void SetData()
    {
        Names = new Dictionary<string, List<bool>>
        {
            { "первый", new List<bool> { true, false, true, false} },
            { "второй", new List<bool> { true, false, true, true} },
            { "третий", new List<bool> { false, false, true, false} }
        };
    }
}

Xaml такой

<Grid>
    <DataGrid ItemsSource="{Binding Names}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Название"
                                Binding="{Binding Key}" />
            <DataGridTextColumn Header="A"
                                Binding="{Binding Value[0]}" />
            <DataGridTextColumn Header="B"
                                Binding="{Binding Value[1]}" />
            <DataGridTextColumn Header="C"
                                Binding="{Binding Value[2]}" />
            <DataGridTextColumn Header="D"
                                Binding="{Binding Value[3]}" />
        </DataGrid.Columns>
    </DataGrid>
</Grid>
READ ALSO
Ошибка при сохранении данных в БД

Ошибка при сохранении данных в БД

При сохранении данных в БД возникает ошибка:

167
Как добавить виртуализацию в RichTextBox?

Как добавить виртуализацию в RichTextBox?

Использую WinFormsМне нужно выводить много информации в RichTextBox, но со временем он наполняется большим кол-вом информации и, как следствие, обновление...

153
Console.BackgroundColor ставит неправильный цвет

Console.BackgroundColor ставит неправильный цвет

Я пытаюсь использовать ConsoleBackgroundColor для изменения заднего фона консоли на некий цвет (предположим, синий - Console

142
Экранирование знака вопроса ? regex c#

Экранирование знака вопроса ? regex c#

вот такая вот регулярка долго ломал голову почему ничего не находит, хотя в тексте всё в точности, стал перепроверять посимвольно и не находит,...

126