WPF - Сетка - обновление вложенных свойств номеров строк и столбцов в дочерних элементах управления каждый раз, когда удаляется новая строка / столбец. - PullRequest
2 голосов
/ 06 мая 2010

У меня есть таблица WPF с XAML, подобной этой:

  <Grid width=200 Height=200 >

        <Grid.ColumnDefinitions >                             
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="2*" />
         </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"  />
            <RowDefinition Height="Auto"  />
            <RowDefinition Height="Auto" MinHeight="24" />
        </Grid.RowDefinitions>

      <TextBlock Text="Name" Grid.Row="0" Grid.Column="0"/>
      <TextBox Grid.Row="0" Grid.Column="1" />

      <TextBlock Text="Age" Grid.Row="1" Grid.Column="0"/>
      <TextBox Grid.Row="1" Grid.Column="1" />

  </Grid>

Мне нужно добавить новую строку между существующими 2 строками данных, но меня беспокоит то, что когда я добавляю новую строку, мне нужно будет вручную обновить прикрепленное свойство Grid.Row в каждом из элементов управления, которые появляются в строках ниже недавно добавленной строки.

Есть ли более разумный способ сделать это? может быть установить номера строк / столбцов относительно соседних строк / столбцов?

Приветствие.

Ответы [ 4 ]

2 голосов
/ 13 мая 2010

Вы не можете достичь этого автоматически. При необходимости вы должны вручную настроить значение Grid.Row для каждого дочернего элемента сетки:

foreach (UIElement child in grid.Children)
            if (Grid.GetRow(child) >= indexOfNewRow)
                Grid.SetRow(Grid.GetRow(child) + 1);
1 голос
/ 30 декабря 2011

Эта проблема решена в Visual Studio 2010 с помощью функций управления строками и столбцами во время разработки.

Больше не требуется вручную обновлять номера строк и столбцов, поскольку Visual Studio позаботится об этом.

Ниже демонстрация этого прекрасно иллюстрирует.

http://www.silverlight.net/learn/creating-ui/layout,-rendering,-and-panels/grid-control-design-time-row-and-column-manipulation-features

0 голосов
/ 11 января 2016

Ссылка на принятый ответ теперь указывает на общую страницу Silverlight 5.

Вы можете сделать это дизайнером Visual Studio XAML, который я иллюстрирую с помощью снимков экрана ниже. Это работает как для WPF, так и для Silverlight.

Лучше всего увеличить представление «Дизайн», чтобы вы могли видеть более четко.

Затем наведите курсор мыши на левый край, и вы получите курсор вставки с горизонтальной оранжевой линией, указывающей, куда будет вставлен ряд:

XAML Design

XAML до:

XAML Before

XAML после вставки:

XAML After Insert

Обратите внимание, что все числа Grid.Row после точки вставки автоматически увеличиваются. Строка в точке вставки автоматически разделяется на две части, и Grid.RowSpan добавляется к элементу, который был в строке в точке вставки.

В более сложных макетах автоматическая вставка может некорректно добавлять или изменять поля элементов ниже точки вставки, поэтому внимательно следите за этим.

0 голосов
/ 19 марта 2015

Я нашел ответ в MSDN Silverlight Forum от Джейсона Розенталя:

Если вы наведите курсор мыши на левый или верхний край сетки, появится маленький выпадающий список появится стрелка с опциями, перемещенными туда

...