powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Проблемы с заполнением доступного пространства в Grid
4 сообщений из 4, страница 1 из 1
Проблемы с заполнением доступного пространства в Grid
    #38692196
NewBarbarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в следующем. Имеется трехстрочный Grid. В первой и последней строке размещены некие контролы, в средней строке помещен GridSpliter. Для первой строки Heigh = "*", для остальных Heigh = "Auto". Также существует checkbox при помощи которого меняется видимость GridSpliter и контрола в последней строке на Colapsed/Visible. Я хочу, чтобы когда GridSpliter и контрол в последней строке невидимы, контрол из первой строки занимал все оставшееся пространство, но этого не происходит. См. код и скриншоты ниже..
Код: 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.
<UserControl x:Class="ChartView"
             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" 
             xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Border>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Border Margin="3">
                <Grid Grid.Row="0"  >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    
                    <d3:ChartPlotter x:Name="TopPlotter"
                                     LegendVisibility="Hidden"
                                     NewLegendVisible="False"
                                     Foreground="{Binding ChartPanels[0].Foreground}"           
                                     Background= "{Binding ChartPanels[0].Background}"
                                     Visibility="{Binding ChartPanels[0].Visibility}" >
                        <d3:ChartPlotter.MainVerticalAxis >
                            <d3:VerticalAxis Name="TopVerticalAxis" Placement="Right" Width="{Binding VerticalAxisWidth}" />
                        </d3:ChartPlotter.MainVerticalAxis>
                        <d3:FilteredMarkerPointsGraph
                            DataSource="{Binding ChartPanels[0].DataSource, UpdateSourceTrigger=PropertyChanged}"
                            Marker="{Binding ChartPanels[0].GraphMarker}"/>
                        <d3:WidthSpring SourcePanel="{Binding LeftPanel, ElementName=BotPlotter}"/>
                    </d3:ChartPlotter>

                    <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" Margin="0" Background="LightGray"
                        Visibility="{Binding ElementName=BotPlotter, Path=Visibility}"/>


                    <d3:ChartPlotter  Grid.Row="2" x:Name="BotPlotter"
                                                LegendVisibility="Hidden"
                                                NewLegendVisible="False"
                                                Foreground="{Binding ChartPanels[1].Foreground}"           
                                                Background= "{Binding ChartPanels[1].Background}"
                                                Visibility="{Binding ChartPanels[1].Visibility}"
                                                MainHorizontalAxisVisibility="{Binding BotHorizontalAxisVisibility, UpdateSourceTrigger=PropertyChanged}" >
                        <d3:ChartPlotter.MainVerticalAxis>
                            <d3:VerticalAxis Name="BotVerticalAxis" Placement="Right" Width="{Binding VerticalAxisWidth}"/>
                        </d3:ChartPlotter.MainVerticalAxis>
                        <d3:FilteredMarkerPointsGraph
                            DataSource="{Binding ChartPanels[1].DataSource, UpdateSourceTrigger=PropertyChanged}"
                            Marker="{Binding ChartPanels[1].GraphMarker}"/>
                        <d3:WidthSpring SourcePanel="{Binding LeftPanel, ElementName=TopPlotter}"/>
                    </d3:ChartPlotter>
                </Grid>
            </Border>
            <StatusBar Grid.Row="1" Height="25" />
        </Grid>
    </Border>
</UserControl>
...
Рейтинг: 0 / 0
Проблемы с заполнением доступного пространства в Grid
    #38692197
NewBarbarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так получается когда скрываем второй контрол и гридсплиттер
...
Рейтинг: 0 / 0
Проблемы с заполнением доступного пространства в Grid
    #38692287
NewBarbarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасение утопающих, дело рук самих утопающих. При перетаскивании GridSplitter Height меняется на конкретное значение, поэтому при коллапсе высота строки остается неизменной. Нашел у буржуев следующие решение - работает...

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<Grid.RowDefinitions>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto">
                            <RowDefinition.Style>
                                <Style TargetType="{x:Type RowDefinition}">
                                 <Style.Triggers>
                                       <DataTrigger Binding="{Binding ElementName=BotPlotter, Path=Visibility}" Value="Collapsed">
                                 <Setter Property="MaxHeight" Value="0"/>
                                </DataTrigger>
                               </Style.Triggers>
                            </Style>
                            </RowDefinition.Style>
                        </RowDefinition>
 </Grid.RowDefinitions>
...
Рейтинг: 0 / 0
Проблемы с заполнением доступного пространства в Grid
    #38692290
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GridSplitter при перемещении устанавливает ысоту строки грида в абсолютное значение, это проверено, поэтому установка Visibility = Collapsed для содержимого строки грида всего лишь скрывает содержимое, но пустое пространство, занимаемое строкой, остается. Здесь нужно забиндить (Mode = TwoWay) строку с изменяемой высотой на свойство модели, отслеживать значение высоты в строке в свойстве, по снятию чекбокса выставлять значение свойства в 0, при установке - возвращать запомненное значение.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Проблемы с заполнением доступного пространства в Grid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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