Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Таблица с дочерними столбцами / 3 сообщений из 3, страница 1 из 1
09.11.2016, 15:27
    #39344290
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица с дочерними столбцами
Под спойлером приведён текст рабочей программы, отображающей таблицу со столбцами, у которой некоторые столбцы объединены в одну группу.
Если начать расширять второй столбец (у которого 3 дочерних), то после его третьего дочернего будет появляться свободное место.
Короче, ширина второго столбца не влияет на ширины его дочерних столбцов.
Вопрос: как растянуть группу из трёх дочерних столбцов по ширине родительского? При том, что HorizontalAlignment="Stretch" уже есть.

рабочая программа
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<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>

...
Рейтинг: 0 / 0
14.11.2016, 14:46
    #39346889
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица с дочерними столбцами
у меня получилось, но нужна ещё помощь.
Почему таблица дублируется (см. картинку)? Вернее, это понятно, почему. Как указать, что чтение таблицы, размещаемой в третьей колонке, должно производиться только из текущего <row>, а не со всех?
Исходный xml для чтения
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<?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>



Исходный код. Рабочий. Выдаёт ту таблицу, что на картинке
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
<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>



А если ещё с форматированием таблицы поможете, будет здорово. Но это уже как-то проще, это не главное.
...
Рейтинг: 0 / 0
14.11.2016, 21:34
    #39347129
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Таблица с дочерними столбцами
в общем, я догадался. Как только доделаю таблицу целиком - выложу её сюда. Мало ли, может, пригодится кому-нибудь.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Таблица с дочерними столбцами / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]