使用WPF DataGrid2D绑定2d数组 [英] Binding 2d array with WPF DataGrid2D

查看:122
本文介绍了使用WPF DataGrid2D绑定2d数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将二维数组绑定到WPF中的DataGrid。我找到了该库 DataGrid2D ,但由于它没有显示正确的结果,我犯了一些错误,但是

I'm tryng to bind a 2 dimensional array to a DataGrid in WPF. I found this library DataGrid2D but I make some mistake because it does not display the correct result but an empty grid.

这是我的XAML代码:

This is my XAML code:

 .....
  xmlns:dataGrid2D="http://gu.se/DataGrid2D"
 ....

 <Grid>
     <DataGrid Name="matrix" dataGrid2D:ItemsSource.Array2D="{Binding Data2D}"
                              dataGrid2D:ItemsSource.ColumnHeadersSource="{Binding ColumnHeaders}"
                              dataGrid2D:ItemsSource.RowHeadersSource="{Binding RowHeaders}" />
 </Grid>

这是.cs

private String[] _columnHeaders;
public String[] ColumnHeaders
{
    get { return _columnHeaders; }
    set { _columnHeaders = value; }
}

private String[] _rowHeaders;
public String[] RowHeaders
{
    get { return _rowHeaders; }
    set { _rowHeaders = value; }
}

private bool[,] _data2D;
public bool[,] Data2D
{
    get { return _data2D; }
    set { _data2D = value; }
}


String[] columnHeaders = { "A", "B", "C" };
String[] rowHeaders = { "1", "2", "3" };
bool[,] data2D = { { true, true, false }, { true, true, false }, { true, true, false } };


ColumnHeaders = columnHeaders;
RowHeaders = rowHeaders;
Data2D = data2D;


推荐答案

我能够通过移动属性设置器设置到我的viewmodel构造函数中,并确保将viewmodel设置为xaml中的数据上下文。

I was able to get this to work by moving the property setters into my viewmodel constructor and ensuring the viewmodel is set as the datacontext in the xaml.

ViewModel:

ViewModel:

public class MainWindowViewModel
{
    private String[] _columnHeaders;
    public String[] ColumnHeaders
    {
        get { return _columnHeaders; }
        set { _columnHeaders = value; }
    }

    private String[] _rowHeaders;
    public String[] RowHeaders
    {
        get { return _rowHeaders; }
        set { _rowHeaders = value; }
    }

    private bool[,] _data2D;
    public bool[,] Data2D
    {
        get { return _data2D; }
        set { _data2D = value; }
    }


    String[] columnHeaders = { "A", "B", "C" };
    String[] rowHeaders = { "1", "2", "3" };
    bool[,] data2D = { { true, true, false }, { true, true, false }, { true, true, false } };

    public MainWindowViewModel()
    {
        ColumnHeaders = columnHeaders;
        RowHeaders = rowHeaders;
        Data2D = data2D;
    }
}

Xaml:

<Window x:Class="Application.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:Application"
    xmlns:dataGrid2D="http://gu.se/DataGrid2D"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
  <Window.DataContext>
    <local:MainWindowViewModel />
  </Window.DataContext>
  <Grid>
    <DataGrid Name="matrix" 
              dataGrid2D:ItemsSource.Array2D="{Binding Data2D}"
              dataGrid2D:ItemsSource.ColumnHeadersSource="{Binding ColumnHeaders}"
              dataGrid2D:ItemsSource.RowHeadersSource="{Binding RowHeaders}" />
  </Grid>
</Window>

这篇关于使用WPF DataGrid2D绑定2d数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆