none
DataGrid добавление заголовка к строкам в разметке XAML RRS feed

Ответы

  • Так как вы нарисовали сделать не очень просто, например вот так

    <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn IsReadOnly="True" Header="Падение напряжения" >
                    </DataGridTextColumn>
                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.Header>
                            <Grid>
                                <TextBlock Text="Ед. из." />
                            </Grid>
                        </DataGridTemplateColumn.Header>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid Background="Transparent">
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="В" />
                                    <TextBlock Grid.Row="1" Grid.Column="5" Text="с" />
                                </Grid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn IsReadOnly="True">
                        <DataGridTemplateColumn.Header>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40"/>
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <TextBlock Grid.ColumnSpan="6" Grid.Row="0" Grid.Column="0" Text="Фаза" HorizontalAlignment="Center" />
                                <TextBlock Grid.Row="1" Grid.Column="0" Text="A" />
                                <TextBlock Grid.Row="1" Grid.Column="1" Text="B" />
                                <TextBlock Grid.Row="1" Grid.Column="2" Text="C" />
                                <TextBlock Grid.Row="1" Grid.Column="3" Text="AB" />
                                <TextBlock Grid.Row="1" Grid.Column="4" Text="BC" />
                                <TextBlock Grid.Row="1" Grid.Column="5" Text="CA" />
                            </Grid>
                        </DataGridTemplateColumn.Header>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid Background="Transparent">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40"/>
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding 1}" />
                                    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding 2}" />
                                    <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding 3}" />
                                    <TextBlock Grid.Row="0" Grid.Column="3" Text="{Binding 4}" />
                                    <TextBlock Grid.Row="0" Grid.Column="4" Text="{Binding 5}" />
                                    <TextBlock Grid.Row="0" Grid.Column="5" Text="{Binding 6}" />
                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding 7}" />
                                    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding 8}" />
                                    <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding 9}" />
                                    <TextBlock Grid.Row="1" Grid.Column="3" Text="{Binding 10}" />
                                    <TextBlock Grid.Row="1" Grid.Column="4" Text="{Binding 11}" />
                                    <TextBlock Grid.Row="1" Grid.Column="5" Text="{Binding 12}" />
                                </Grid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

    18 июня 2013 г. 11:59
  • Если на обычном гриде то можно так

    <Grid>
                <Grid.Resources>
                    <Style TargetType="Border">
                        <Setter Property="BorderBrush" Value="Black"></Setter>
                        <Setter Property="BorderThickness" Value="1"></Setter>
                    </Style>
                </Grid.Resources>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                </Grid.RowDefinitions>
                <Border Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" ><TextBlock Text="Падение напряжения" /></Border>
                <Border Grid.Row="0" Grid.Column="1" Grid.RowSpan="2"><TextBlock  Text="ед.из." /></Border>
                <Border Grid.ColumnSpan="6" Grid.Row="0" Grid.Column="2"><TextBlock  Text="Фаза" HorizontalAlignment="Center" /></Border>
                <Border Grid.Row="1" Grid.Column="2" ><TextBlock Text="A" /></Border>
                <Border Grid.Row="1" Grid.Column="3" ><TextBlock Text="B" /></Border>
                <Border Grid.Row="1" Grid.Column="4"><TextBlock  Text="C" /></Border>
                <Border Grid.Row="1" Grid.Column="5"><TextBlock  Text="AB" /></Border>
                <Border Grid.Row="1" Grid.Column="6"><TextBlock  Text="BC" /></Border>
                <Border Grid.Row="1" Grid.Column="7" ><TextBlock Text="CA" /></Border>
                <Border Grid.Row="2" Grid.Column="0" Grid.RowSpan="2"><TextBlock  Text="На входе Су" /></Border>
                <Border Grid.Row="2" Grid.Column="1"><TextBlock  Text="В" /></Border>
                <Border Grid.Row="3" Grid.Column="1"><TextBlock  Text="c" /></Border>
                <Border Grid.Row="2" Grid.Column="2" ><TextBlock Text="{Binding 1}" /></Border>
                <Border Grid.Row="2" Grid.Column="3" ><TextBlock Text="{Binding 2}" /></Border>
                <Border Grid.Row="2" Grid.Column="4" ><TextBlock Text="{Binding 3}" /></Border>
                <Border Grid.Row="2" Grid.Column="5"><TextBlock  Text="{Binding 4}" /></Border>
                <Border Grid.Row="2" Grid.Column="6" ><TextBlock Text="{Binding 5}" /></Border>
                <Border Grid.Row="2" Grid.Column="7" ><TextBlock Text="{Binding 6}" /></Border>
                <Border Grid.Row="3" Grid.Column="2" ><TextBlock Text="{Binding 21}" /></Border>
                <Border Grid.Row="3" Grid.Column="3" ><TextBlock Text="{Binding 22}" /></Border>
                <Border Grid.Row="3" Grid.Column="4" ><TextBlock Text="{Binding 23}" /></Border>
                <Border Grid.Row="3" Grid.Column="5"><TextBlock Text="{Binding 24}" /></Border>
                <Border Grid.Row="3" Grid.Column="6"><TextBlock  Text="{Binding 25}" /></Border>
                <Border Grid.Row="3" Grid.Column="7"><TextBlock  Text="{Binding 26}" /></Border>
                <Border Grid.Row="4" Grid.Column="0" Grid.RowSpan="2"><TextBlock  Text="На Су" /></Border>
                <Border Grid.Row="4" Grid.Column="1"><TextBlock  Text="В" /></Border>
                <Border Grid.Row="5" Grid.Column="1"><TextBlock  Text="c" /></Border>
                <Border Grid.Row="4" Grid.Column="2" ><TextBlock Text="{Binding 31}" /></Border>
                <Border Grid.Row="4" Grid.Column="3" ><TextBlock Text="{Binding 32}" /></Border>
                <Border Grid.Row="4" Grid.Column="4" ><TextBlock Text="{Binding 33}" /></Border>
                <Border Grid.Row="4" Grid.Column="5"><TextBlock  Text="{Binding 34}" /></Border>
                <Border Grid.Row="4" Grid.Column="6" ><TextBlock Text="{Binding 35}" /></Border>
                <Border Grid.Row="4" Grid.Column="7" ><TextBlock Text="{Binding 36}" /></Border>
                <Border Grid.Row="5" Grid.Column="2" ><TextBlock Text="{Binding 41}" /></Border>
                <Border Grid.Row="5" Grid.Column="3" ><TextBlock Text="{Binding 42}" /></Border>
                <Border Grid.Row="5" Grid.Column="4" ><TextBlock Text="{Binding 43}" /></Border>
                <Border Grid.Row="5" Grid.Column="5"><TextBlock Text="{Binding 44}" /></Border>
                <Border Grid.Row="5" Grid.Column="6"><TextBlock  Text="{Binding 45}" /></Border>
                <Border Grid.Row="5" Grid.Column="7"><TextBlock  Text="{Binding 46}" /></Border>
            </Grid>

    • Помечено в качестве ответа skemuze 21 июня 2013 г. 2:39
    20 июня 2013 г. 10:02

Все ответы

  • Несовсем понятно что вам конкретно нужно, попробуйте нарисовать набросок и показать его
    18 июня 2013 г. 8:24
  • Быстро - никак. Я бы обернул данные во вспомогательный класс. В котором бы было два поля: заголовок строки, объект с реальными данными. Ну и в DataGrid прописал бы соответствующее оформление для первого столбца.

    18 июня 2013 г. 9:31
    Отвечающий
  • картинка примерно вот так должна выглядеть таблица, обернуть в класc нельзя данная таблица должна быть реализована полностью в XAML 

    • Изменено skemuze 18 июня 2013 г. 11:44
    18 июня 2013 г. 11:41
  • Так как вы нарисовали сделать не очень просто, например вот так

    <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn IsReadOnly="True" Header="Падение напряжения" >
                    </DataGridTextColumn>
                    <DataGridTemplateColumn>
                        <DataGridTemplateColumn.Header>
                            <Grid>
                                <TextBlock Text="Ед. из." />
                            </Grid>
                        </DataGridTemplateColumn.Header>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid Background="Transparent">
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="В" />
                                    <TextBlock Grid.Row="1" Grid.Column="5" Text="с" />
                                </Grid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
                    <DataGridTemplateColumn IsReadOnly="True">
                        <DataGridTemplateColumn.Header>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40"/>
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                    <ColumnDefinition Width="40" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <TextBlock Grid.ColumnSpan="6" Grid.Row="0" Grid.Column="0" Text="Фаза" HorizontalAlignment="Center" />
                                <TextBlock Grid.Row="1" Grid.Column="0" Text="A" />
                                <TextBlock Grid.Row="1" Grid.Column="1" Text="B" />
                                <TextBlock Grid.Row="1" Grid.Column="2" Text="C" />
                                <TextBlock Grid.Row="1" Grid.Column="3" Text="AB" />
                                <TextBlock Grid.Row="1" Grid.Column="4" Text="BC" />
                                <TextBlock Grid.Row="1" Grid.Column="5" Text="CA" />
                            </Grid>
                        </DataGridTemplateColumn.Header>
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid Background="Transparent">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40"/>
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                        <ColumnDefinition Width="40" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition />
                                        <RowDefinition />
                                    </Grid.RowDefinitions>
                                    <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding 1}" />
                                    <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding 2}" />
                                    <TextBlock Grid.Row="0" Grid.Column="2" Text="{Binding 3}" />
                                    <TextBlock Grid.Row="0" Grid.Column="3" Text="{Binding 4}" />
                                    <TextBlock Grid.Row="0" Grid.Column="4" Text="{Binding 5}" />
                                    <TextBlock Grid.Row="0" Grid.Column="5" Text="{Binding 6}" />
                                    <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding 7}" />
                                    <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding 8}" />
                                    <TextBlock Grid.Row="1" Grid.Column="2" Text="{Binding 9}" />
                                    <TextBlock Grid.Row="1" Grid.Column="3" Text="{Binding 10}" />
                                    <TextBlock Grid.Row="1" Grid.Column="4" Text="{Binding 11}" />
                                    <TextBlock Grid.Row="1" Grid.Column="5" Text="{Binding 12}" />
                                </Grid>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                </DataGrid.Columns>
            </DataGrid>

    18 июня 2013 г. 11:59
  • спасибо за вышеприведенный код но я так и не понял как у строки задать header
    19 июня 2013 г. 3:23
  • Для этого нужно переопределить RowHeaderTemplate, но по приведенной картинке проще сделать как я показыл выше
    19 июня 2013 г. 4:54
  • в вашем примере почему то не отображаются строки пока не пропишешь элемент в items datagrid
    • Изменено skemuze 19 июня 2013 г. 5:56 решил проблему но странным способом
    19 июня 2013 г. 5:46
  • Все правильно, это ведь набор данных и они отображаются только когда они есть
    19 июня 2013 г. 7:46
  • те мне придется добавлять кучу textblock'ов которые будут ссылатся на внешние данные, а те что описаны в template будут ссылаться на добавленные textblock
    19 июня 2013 г. 11:12
  • в принцепе да, если у вас это статический контрол с данными то можно не использовать datagrid а сделать в простой разметке grid а чуть позже покажу пример
    19 июня 2013 г. 11:19
  • у меня была идея сделать в grid но я столкнулся с проблемой от рисовки линий 
    20 июня 2013 г. 2:57
  • Если на обычном гриде то можно так

    <Grid>
                <Grid.Resources>
                    <Style TargetType="Border">
                        <Setter Property="BorderBrush" Value="Black"></Setter>
                        <Setter Property="BorderThickness" Value="1"></Setter>
                    </Style>
                </Grid.Resources>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                </Grid.RowDefinitions>
                <Border Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" ><TextBlock Text="Падение напряжения" /></Border>
                <Border Grid.Row="0" Grid.Column="1" Grid.RowSpan="2"><TextBlock  Text="ед.из." /></Border>
                <Border Grid.ColumnSpan="6" Grid.Row="0" Grid.Column="2"><TextBlock  Text="Фаза" HorizontalAlignment="Center" /></Border>
                <Border Grid.Row="1" Grid.Column="2" ><TextBlock Text="A" /></Border>
                <Border Grid.Row="1" Grid.Column="3" ><TextBlock Text="B" /></Border>
                <Border Grid.Row="1" Grid.Column="4"><TextBlock  Text="C" /></Border>
                <Border Grid.Row="1" Grid.Column="5"><TextBlock  Text="AB" /></Border>
                <Border Grid.Row="1" Grid.Column="6"><TextBlock  Text="BC" /></Border>
                <Border Grid.Row="1" Grid.Column="7" ><TextBlock Text="CA" /></Border>
                <Border Grid.Row="2" Grid.Column="0" Grid.RowSpan="2"><TextBlock  Text="На входе Су" /></Border>
                <Border Grid.Row="2" Grid.Column="1"><TextBlock  Text="В" /></Border>
                <Border Grid.Row="3" Grid.Column="1"><TextBlock  Text="c" /></Border>
                <Border Grid.Row="2" Grid.Column="2" ><TextBlock Text="{Binding 1}" /></Border>
                <Border Grid.Row="2" Grid.Column="3" ><TextBlock Text="{Binding 2}" /></Border>
                <Border Grid.Row="2" Grid.Column="4" ><TextBlock Text="{Binding 3}" /></Border>
                <Border Grid.Row="2" Grid.Column="5"><TextBlock  Text="{Binding 4}" /></Border>
                <Border Grid.Row="2" Grid.Column="6" ><TextBlock Text="{Binding 5}" /></Border>
                <Border Grid.Row="2" Grid.Column="7" ><TextBlock Text="{Binding 6}" /></Border>
                <Border Grid.Row="3" Grid.Column="2" ><TextBlock Text="{Binding 21}" /></Border>
                <Border Grid.Row="3" Grid.Column="3" ><TextBlock Text="{Binding 22}" /></Border>
                <Border Grid.Row="3" Grid.Column="4" ><TextBlock Text="{Binding 23}" /></Border>
                <Border Grid.Row="3" Grid.Column="5"><TextBlock Text="{Binding 24}" /></Border>
                <Border Grid.Row="3" Grid.Column="6"><TextBlock  Text="{Binding 25}" /></Border>
                <Border Grid.Row="3" Grid.Column="7"><TextBlock  Text="{Binding 26}" /></Border>
                <Border Grid.Row="4" Grid.Column="0" Grid.RowSpan="2"><TextBlock  Text="На Су" /></Border>
                <Border Grid.Row="4" Grid.Column="1"><TextBlock  Text="В" /></Border>
                <Border Grid.Row="5" Grid.Column="1"><TextBlock  Text="c" /></Border>
                <Border Grid.Row="4" Grid.Column="2" ><TextBlock Text="{Binding 31}" /></Border>
                <Border Grid.Row="4" Grid.Column="3" ><TextBlock Text="{Binding 32}" /></Border>
                <Border Grid.Row="4" Grid.Column="4" ><TextBlock Text="{Binding 33}" /></Border>
                <Border Grid.Row="4" Grid.Column="5"><TextBlock  Text="{Binding 34}" /></Border>
                <Border Grid.Row="4" Grid.Column="6" ><TextBlock Text="{Binding 35}" /></Border>
                <Border Grid.Row="4" Grid.Column="7" ><TextBlock Text="{Binding 36}" /></Border>
                <Border Grid.Row="5" Grid.Column="2" ><TextBlock Text="{Binding 41}" /></Border>
                <Border Grid.Row="5" Grid.Column="3" ><TextBlock Text="{Binding 42}" /></Border>
                <Border Grid.Row="5" Grid.Column="4" ><TextBlock Text="{Binding 43}" /></Border>
                <Border Grid.Row="5" Grid.Column="5"><TextBlock Text="{Binding 44}" /></Border>
                <Border Grid.Row="5" Grid.Column="6"><TextBlock  Text="{Binding 45}" /></Border>
                <Border Grid.Row="5" Grid.Column="7"><TextBlock  Text="{Binding 46}" /></Border>
            </Grid>

    • Помечено в качестве ответа skemuze 21 июня 2013 г. 2:39
    20 июня 2013 г. 10:02