DataGrid дополнительный столбец и строка - PullRequest
1 голос
/ 16 февраля 2011
<DataGrid Name="grid"
              HorizontalAlignment="Left"
              VerticalAlignment="Top"
              IsReadOnly="False"
              HeadersVisibility="None"
              AutoGenerateColumns="True"
              AutoGeneratingColumn="c_dataGrid_AutoGeneratingColumn">

public static DataView GetBindable2DArray<T>(this T[,] array)
        {
            DataTable dataTable = new DataTable();
            for (int i = 0; i < array.GetLength(1); i++)
            {
                dataTable.Columns.Add(i.ToString(), typeof(Ref<T>));
            }
            for (int i = 0; i < array.GetLength(0); i++)
            {
                DataRow dataRow = dataTable.NewRow();
                dataTable.Rows.Add(dataRow);
            }
            DataView dataView = new DataView(dataTable);
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    int a = i;
                    int b = j;
                    Ref<T> refT = new Ref<T>(() => array[a, b], z => { array[a, b] = z; });
                    dataView[i][j] = refT;
                }
            }
            return dataView;
        }

public class Ref<T>
    {
        private readonly Func<T> getter;
        private readonly Action<T> setter;
        public Ref(Func<T> getter, Action<T> setter)
        {
            this.getter = getter;
            this.setter = setter;
        }
        public T Value { get { return getter(); } set { setter(value); } }
    } 

Вот мой код.И я получил эту DataGrid:

enter image description here

Но вот дополнительная строка и столбец.Как показать только мою сетку 5х5 без пустой строки?

1 Ответ

1 голос
/ 16 февраля 2011

Я предлагаю вам проверить возвращаемые значения GetLength (0) и GetLength (1), чтобы убедиться, что они делают то, что вы ожидаете от них.Кроме того, у меня всегда была одна дополнительная строка (для создания новой строки на лету), когда я использовал сетки данных.

Обновление: дополнительная строка исчезает, когда для IsReadOnly установлено значение «True» (как я уже сказал,это сделано для редактирования на лету), и дополнительный столбец не является реальным столбцом, это пространство заголовка строки, показанного справа.Исчезает, если для параметра HeadersVisibility задано значение «Все» или «Строка».

...