powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Таблица с дочерними столбцами
3 сообщений из 3, страница 1 из 1
Таблица с дочерними столбцами
    #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
Таблица с дочерними столбцами
    #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
Таблица с дочерними столбцами
    #39347129
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем, я догадался. Как только доделаю таблицу целиком - выложу её сюда. Мало ли, может, пригодится кому-нибудь.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Таблица с дочерними столбцами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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