Свернутые строки с помощью Silverlight DataGrid - PullRequest
1 голос
/ 05 января 2011

Я пытаюсь стилизовать сетку данных Silverlight, чтобы содержимое, отображаемое в сетке, переносилось.Я хочу, чтобы каждая строка сетки (и заголовок сетки) состояла из ДВУХ строк ячеек вместо одной.Это делает каждую строку выше, но сохраняет весь контент видимым на экране одновременно, вместо того, чтобы выполнять горизонтальную прокрутку, чтобы увидеть все поля.Вот иллюстрация, которая поможет проиллюстрировать, что я собираюсь сделать:

Снимок экрана (У меня недостаточно представителя для публикации изображения напрямую, но ссылка выше покажет вам пример экрана)

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

1 Ответ

1 голос
/ 10 января 2011

Ваша лучшая ставка здесь - отказаться от сетки данных и использовать вместо нее ListView, а внутри ListView вы захотите показать UserControl вашего собственного дизайна. Я сделал нечто подобное для приложения, которое я создал.

В вашем XAML для вашего ListView вы захотите установить ItemContainerStyle, а внутри вы захотите отобразить свой собственный UserControl (в котором вы можете использовать Grid для настройки строк / столбцов и их диапазонов). В основном это выглядит так:

<ListView 
      Name="_listView"
       Grid.Row="0" Grid.Column="0"
      SelectionMode="Single"   
      IsSynchronizedWithCurrentItem="True"
      SelectedItem="{Binding SelectedAgent, Mode=TwoWay}"
      ItemsSource="{Binding Agents, Mode=OneWay}" 
      GridViewColumnHeader.Click="ListView_Click"
      DependencyProperties:ListBoxClickCommand.ClickCommand="{Binding ShowAgentDetailsCommand}">
      <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="ListViewItem">
                <Border 
                  Name="_border"
                  Padding="2"
                  CornerRadius="5" 
                  SnapsToDevicePixels="true"
                  Background="Transparent">
                    <Controls:AgentStateControl></Controls:AgentStateControl>
                </Border>
                <ControlTemplate.Triggers>
                  <Trigger Property="IsSelected" Value="True">
                    <Setter TargetName="_border" Property="Background" Value="CornflowerBlue" />
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </ListView.ItemContainerStyle>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...