Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 Таблица с дочерними столбцами  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
Под спойлером приведён текст рабочей программы, отображающей таблицу со столбцами, у которой некоторые столбцы объединены в одну группу.
Если начать расширять второй столбец (у которого 3 дочерних), то после его третьего дочернего будет появляться свободное место.
Короче, ширина второго столбца не влияет на ширины его дочерних столбцов.
Вопрос: как растянуть группу из трёх дочерних столбцов по ширине родительского? При том, что HorizontalAlignment="Stretch" уже есть.

+ рабочая программа
<Window
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"
	x:Class="ListViewColumnsInColumns.Window1"
	x:Name="Window"
	Title="Window1"
	Width="640" Height="480">

    <Window.Resources>

        <XmlDataProvider x:Key="NYTTech" d:IsDataSource="True" Source="http://www.nytimes.com/services/xml/rss/nyt/Technology.xml"/>

        <DataTemplate x:Key="ImageTemplate">
            <Image Source="{Binding Mode=OneWay, XPath=url}" />
        </DataTemplate>

        <GridViewColumnCollection x:Key="ImageColumnCollection">
            <GridViewColumn	Header="Title"				
				DisplayMemberBinding="{Binding Mode=OneWay, XPath=title}" />
            <GridViewColumn Header="URL"				
				DisplayMemberBinding="{Binding Mode=OneWay, XPath=url}" />
            <GridViewColumn Header="Link"
				DisplayMemberBinding="{Binding Mode=OneWay, XPath=link}" />
        </GridViewColumnCollection>

        <Style x:Key="StretchHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>

        <DataTemplate x:Key="MultiColumnHeaderTemplate">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock Text="{Binding}" 
					HorizontalAlignment="Center"/>
                <GridViewHeaderRowPresenter Grid.Row="1" 
					>>>HorizontalAlignment="Stretch"<<<
					Columns="{DynamicResource ImageColumnCollection}"/>
            </Grid>
        </DataTemplate>

        <DataTemplate x:Key="MultiColumnCellTemplate">
            <Grid>
                <GridViewRowPresenter HorizontalAlignment="Stretch"
		 			Columns="{StaticResource ImageColumnCollection}"/>
            </Grid>
        </DataTemplate>

    </Window.Resources>

    <Grid x:Name="LayoutRoot">
        <ListView ItemsSource="{Binding Mode=Default, Source={StaticResource NYTTech}, XPath=/rss/channel/image}" 
			IsSynchronizedWithCurrentItem="True">
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{StaticResource StretchHeaderStyle}">
                    <GridViewColumn Header="Image"
						CellTemplate="{StaticResource ImageTemplate}" />
                    <GridViewColumn 	Header="Image Information"
						HeaderTemplate="{StaticResource MultiColumnHeaderTemplate}"
						CellTemplate="{StaticResource MultiColumnCellTemplate}" />

                </GridView>
            </ListView.View>
        </ListView>

    </Grid>
</Window>


К сообщению приложен файл. Размер - 4Kb
9 ноя 16, 15:27    [19875390]     Ответить | Цитировать Сообщить модератору
 Re: Таблица с дочерними столбцами  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
у меня получилось, но нужна ещё помощь.
Почему таблица дублируется (см. картинку)? Вернее, это понятно, почему. Как указать, что чтение таблицы, размещаемой в третьей колонке, должно производиться только из текущего <row>, а не со всех?
Исходный xml для чтения
+
<?xml version="1.0"?>
<rss>
	<row>
		<family>Ronya</family>
		<name>Hoppa</name>
		<kat>
			<id>1</id>
			<company>Mampf</company>
			<date>17.1.2010</date>
		</kat>
		<kat>
			<id>2</id>
			<company>Rooby</company>
			<date>17.2.2010</date>
		</kat>
	</row>
	<row>
		<family>Helio</family>
		<name>roleo</name>
		<kat>
			<id>1</id>
			<company>Jack</company>
			<date>17.1.2010</date>
		</kat>
		<kat>
			<id>2</id>
			<company>Yorik</company>
			<date>17.2.2010</date>
		</kat>
		<kat>
			<id>4</id>
			<company>Sony</company>
			<date>11.2.2010</date>
		</kat>
	</row>
	<row>
		<family>12</family>
		<name>1312</name>
		<kat>
			<id>1</id>
			<company>q22wer</company>
			<date>17.1.222010</date>
		</kat>
		<kat>
			<id>44</id>
			<company>4222</company>
			<date>17.2.241242010</date>
		</kat>
	</row>
</rss>


Исходный код. Рабочий. Выдаёт ту таблицу, что на картинке
+
<Window x:Class="MDTable.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="871.269">
    <Window.Resources>
        <XmlDataProvider x:Key="MDSource" d:IsDataSource="True" Source="Data/1.xml" />
        <DataTemplate x:Key="familyTemplate">
            <TextBlock Text="{Binding Mode=OneWay, XPath=family}" />
        </DataTemplate>
        <DataTemplate x:Key="nameTemplate">
            <TextBlock Text="{Binding Mode=OneWay, XPath=name}" />
        </DataTemplate>
        <GridViewColumnCollection x:Key="Katcollection">
            <GridViewColumn Header="id"   DisplayMemberBinding="{Binding Mode=OneWay, XPath=id}"/>
            <GridViewColumn Header="comp name" DisplayMemberBinding="{Binding Mode=OneWay, XPath=company}"/>
            <GridViewColumn Header="date"  DisplayMemberBinding="{Binding Mode=OneWay, XPath=date}"/>
        </GridViewColumnCollection>
        <Style x:Key="StretchHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
        <DataTemplate x:Key="KataHeaderTemplate">
            <Grid HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <TextBlock Text="{Binding}" 
					HorizontalAlignment="Center"/>
                <GridViewHeaderRowPresenter Grid.Row="1" 
					HorizontalAlignment="Stretch"
					Columns="{DynamicResource Katcollection}"/>
            </Grid>
        </DataTemplate>
        <DataTemplate x:Key="KataCellTemplate2">
            <GridViewRowPresenter HorizontalAlignment="Stretch"
		 			Columns="{StaticResource Katcollection}"/>
        </DataTemplate>

        <DataTemplate x:Key="KataCellTemplate">
            <Grid Margin="0">
                <ListView Margin="0" ItemsSource="{Binding Mode=Default, Source={StaticResource MDSource}, XPath=rss/row/kat}" 
			IsSynchronizedWithCurrentItem="True">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn CellTemplate="{StaticResource KataCellTemplate2}" />
                        </GridView>
                    </ListView.View>
                </ListView>
                
            </Grid>
        </DataTemplate>
    </Window.Resources>

    <Grid x:Name="LayoutRoot">
        <ListView Margin="0" ItemsSource="{Binding Mode=Default, Source={StaticResource MDSource}, XPath=rss/row}" 
			IsSynchronizedWithCurrentItem="True">
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{StaticResource StretchHeaderStyle}">
                    <GridViewColumn Header="family"
						CellTemplate="{StaticResource familyTemplate}" />
                    <GridViewColumn Header="name"
						CellTemplate="{StaticResource nameTemplate}" />
                    <GridViewColumn Header="add info"
						HeaderTemplate="{StaticResource KataHeaderTemplate}"
						CellTemplate="{StaticResource KataCellTemplate}" />

                </GridView>
            </ListView.View>
        </ListView>

    </Grid>
</Window>


А если ещё с форматированием таблицы поможете, будет здорово. Но это уже как-то проще, это не главное.

К сообщению приложен файл. Размер - 24Kb
14 ноя 16, 14:46    [19891510]     Ответить | Цитировать Сообщить модератору
 Re: Таблица с дочерними столбцами  [new]
Charles Weyland
Member

Откуда: Feorina "Fury" 161
Сообщений: 4350
в общем, я догадался. Как только доделаю таблицу целиком - выложу её сюда. Мало ли, может, пригодится кому-нибудь.
14 ноя 16, 21:34    [19893239]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить