Ik heb een probleem met een stuk XAML, ik ben er nu al een aantal uur mee aan het stoeien, maar ik krijg het niet voor elkaar.
Eerst een screenshot die het probleemt toont:

Linksonderin zit een lijst met "Sessions", deze is op dit moment groter dan het scherm. Wat ik wil is dat deze onderaan het scherm stopt, en een scrollbar laat zien om de rest van de content te bekijken.
En dat die rechter scrollbar dus standaard niet zichtbaar is, alleen als ik een van die rechter 3 blokken zo groot maakt dat het niet meer past, moet die rechter scrollbar zichtbaar worden.
Hiervoor gebruik ik deze XAML:
Als ik het scherm full size maak, komt de onderkant van de Border wel netjes aan de onderkant van het scherm.
Als ik de Border een maximum size geef, wordt er wel netjes een scrollbar zichtbaar.
Het lijkt er op dat de SessionsBorder denkt dat hij alle ruimte heeft, en daardoor toont de ScrollViewer geen scrollbar. Maar ik kom er maar niet achter waarom de SessionsBorder dat denkt.
Wie o wie kan mij hiermee verder helpen, want voor mijn gevoel heb ik alles al geprobeerd...
Eerst een screenshot die het probleemt toont:

Linksonderin zit een lijst met "Sessions", deze is op dit moment groter dan het scherm. Wat ik wil is dat deze onderaan het scherm stopt, en een scrollbar laat zien om de rest van de content te bekijken.
En dat die rechter scrollbar dus standaard niet zichtbaar is, alleen als ik een van die rechter 3 blokken zo groot maakt dat het niet meer past, moet die rechter scrollbar zichtbaar worden.
Hiervoor gebruik ik deze XAML:
C#:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
| <UserControl x:Class="DashboardContainer.Dashboard" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:SEC="clr-namespace:DCCFT.WPFCustomControls.SEControls;assembly=DCCFT.WPFCustomControls" xmlns:charts="clr-namespace:DCCFT.Charts;assembly=DCCFT.Charts" > <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/DCCFT.GUI;component/AppStyle.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </UserControl.Resources> <ScrollViewer HorizontalScrollBarVisibility="Disabled"> <Grid Name="grdMain"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Border Style="{StaticResource BorderWrapper}" Grid.Row="0" Name="SetupBorder"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="150" /> </Grid.ColumnDefinitions> <Border Style="{StaticResource WrapperTitleBorder}" Grid.Row="0" Grid.ColumnSpan="2"> <SEC:SELabel Name="lblSetup" Content="Setup" Style="{StaticResource WrapperTitle}" /> </Border> <SEC:SETextBlock Grid.Column="0" Grid.Row="1" Name="lblOperator" Style="{StaticResource Text}" Text="Operator"/> <TextBlock Grid.Column="1" Grid.Row="1" Name="lblOperatorInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="2" Name="lblTester" Style="{StaticResource Text}" Text="Tester" /> <TextBlock Grid.Column="1" Grid.Row="2" Name="lblTesterInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="3" Name="lblHandler" Style="{StaticResource Text}" Text="Handler" /> <TextBlock Grid.Column="1" Grid.Row="3" Name="lblHandlerInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="4" Name="lblLoadBoard" Style="{StaticResource Text}" Text="Load board" /> <TextBlock Grid.Column="1" Grid.Row="4" Name="lblLoadBoardInput" Style="{StaticResource TextBold}" /> </Grid> </Border> <Border Style="{StaticResource BorderWrapper}" Grid.Row="1" Name="ProcessBorder"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="150" /> </Grid.ColumnDefinitions> <Border Style="{StaticResource WrapperTitleBorder}" Grid.Row="0" Grid.ColumnSpan="2"> <Label Content="Process" Style="{StaticResource WrapperTitle}" /> </Border> <SEC:SETextBlock Grid.Column="0" Grid.Row="1" Name="lblProduct" Style="{StaticResource Text}" Text="Product" /> <TextBlock Grid.Column="1" Grid.Row="1" Name="lblProductInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="2" Name="lblLot" Style="{StaticResource Text}" Text="Lot ID" /> <TextBlock Grid.Column="1" Grid.Row="2" Name="lblLotInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="3" Name="lblProcesStep" Style="{StaticResource Text}" Text="Process step" /> <TextBlock Grid.Column="1" Grid.Row="3" Name="lblProcesStepInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="4" Name="lblTestProgram" Style="{StaticResource Text}" Text="Test program" /> <TextBlock Grid.Column="1" Grid.Row="4" Name="lblTestProgramInput" Style="{StaticResource TextBold}" /> </Grid> </Border> <Border Style="{StaticResource BorderWrapper}" Grid.Row="2" Name="StateBorder"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="150" /> </Grid.ColumnDefinitions> <Border Style="{StaticResource WrapperTitleBorder}" Grid.ColumnSpan="2" Grid.Row="0"> <SEC:SELabel Name="lblState" Content="State" Style="{StaticResource WrapperTitle}"/> </Border> <SEC:SETextBlock Grid.Column="0" Grid.Row="1" Name="lblSyncTesterData" Style="{StaticResource Text}" Text="Sync Tester Data" /> <TextBlock Grid.Column="1" Grid.Row="1" Name="lblSyncTesterDataInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="2" Name="lblLotQuantity" Style="{StaticResource Text}" Text="Lot quantity" /> <TextBlock Grid.Column="1" Grid.Row="2" Name="lblLotQuantityInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="3" Name="lblPartsTested" Style="{StaticResource Text}" Text="Parts tested" /> <TextBlock Grid.Column="1" Grid.Row="3" Name="lblCurrentInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="4" Name="lblRemaining" Style="{StaticResource Text}" Width="100" Text="Parts remaining" /> <TextBlock Grid.Column="1" Grid.Row="4" Name="lblRemainingInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="5" Name="lblUPH" Style="{StaticResource Text}" Width="100" Text="UPH" /> <TextBlock Grid.Column="1" Grid.Row="5" Name="lblUPHInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="6" Name="lblStarted" Style="{StaticResource Text}" Text="Start time" /> <TextBlock Grid.Column="1" Grid.Row="6" Name="lblStartedInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="7" Name="lblRemainingTime" Style="{StaticResource Text}" Text="Time remaining" /> <TextBlock Grid.Column="1" Grid.Row="7" Name="lblRemainingTimeInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="8" Name="lblETA" Style="{StaticResource Text}" Text="ETA" /> <TextBlock Grid.Column="1" Grid.Row="8" Name="lblETAInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="9" Name="lblTestingTime" Style="{StaticResource Text}" Text="Test time" /> <TextBlock Grid.Column="1" Grid.Row="9" Name="lblTestingTimeInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="10" Name="lblHandlingTime" Style="{StaticResource Text}" Text="Handling time" /> <TextBlock Grid.Column="1" Grid.Row="10" Name="lblHandlingTimeInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="11" Name="lblAvgTestTime" Style="{StaticResource Text}" Text="Avg. Test time" /> <TextBlock Grid.Column="1" Grid.Row="11" Name="lblAvgTestTimeInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="12" Name="lblAvgModuleTime" Style="{StaticResource Text}" Text="Avg. Module time" /> <TextBlock Grid.Column="1" Grid.Row="12" Name="lblAvgModuleTimeInput" Style="{StaticResource TextBold}" /> <SEC:SETextBlock Grid.Column="0" Grid.Row="13" Name="lblAvgHandlingTime" Style="{StaticResource Text}" Text="Avg. Handling time" /> <TextBlock Grid.Column="1" Grid.Row="13" Name="lblAvgHandlingTimeInput" Style="{StaticResource TextBold}" /> </Grid> </Border> <Border Style="{StaticResource BorderWrapper}" Grid.Row="3" Name="SessionsBorder"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="20" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="70" /> <ColumnDefinition Width="70" /> </Grid.ColumnDefinitions> <SEC:SELabel Name="lblSessionNumber" Grid.Row="0" Grid.Column="0" Content="#" Width="Auto" Style="{StaticResource TableHeader}" /> <SEC:SELabel Name="lblSessionName" Grid.Row="0" Grid.Column="1" Content="Session" Width="Auto" Style="{StaticResource TableHeader}" /> <SEC:SELabel Name="lblTested" Grid.Row="0" Grid.Column="2" Content="Tested" Width="Auto" Style="{StaticResource TableHeader}" /> <SEC:SELabel Name="lblYield" Grid.Row="0" Grid.Column="3" Content="Yield" Width="Auto" Style="{StaticResource TableHeader}" /> <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Grid.Row="1" Grid.ColumnSpan="4" Grid.Column="0"> <StackPanel Name="spSessions" IsEnabled="true" /> </ScrollViewer> </Grid> </Border> </Grid> <Grid Grid.Column="1" Name="grdCharts"> <Grid.ColumnDefinitions> <ColumnDefinition Width="190" MaxWidth="190" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="0" MinHeight="30" x:Name="rwYieldValuesPanel" /> <RowDefinition Height="0" MinHeight="30" x:Name="rwBatchResultsPanel" /> <RowDefinition Height="0" MinHeight="30" x:Name="rwBinSummaryPanel" /> <RowDefinition Height="0" MaxHeight="0" /> </Grid.RowDefinitions> <Border Style="{StaticResource BorderWrapper}" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2"> <charts:YieldLineChart x:Name="YieldLineChart" /> </Border> <GridSplitter Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Height="5" HorizontalAlignment="Stretch" Name="gridSplitter1" VerticalAlignment="Bottom" ResizeDirection="Rows" ResizeBehavior="CurrentAndNext" DragCompleted="SaveSettings"/> <Border Style="{StaticResource BorderWrapper}" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2"> <charts:BatchResultsPanel x:Name="BatchResultsPanel"/> </Border> <GridSplitter Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Height="5" HorizontalAlignment="Stretch" Name="gridSplitter2" VerticalAlignment="Bottom" ResizeDirection="Rows" ResizeBehavior="CurrentAndNext" DragCompleted="SaveSettings" /> <Border Style="{StaticResource BorderWrapper}" Grid.Column="0" Grid.Row="2" > <charts:YieldSummary x:Name="YieldSummaryChart" /> </Border> <Border Style="{StaticResource BorderWrapper}" Grid.Column="1" Grid.Row="2" > <charts:BinSummary x:Name="BinSummaryChart" /> </Border> <GridSplitter Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Height="5" HorizontalAlignment="Stretch" Name="gridSplitter3" VerticalAlignment="Bottom" ResizeDirection="Rows" ResizeBehavior="BasedOnAlignment" DragCompleted="SaveSettings" /> </Grid> </Grid> </ScrollViewer> </UserControl> |
Als ik het scherm full size maak, komt de onderkant van de Border wel netjes aan de onderkant van het scherm.
Als ik de Border een maximum size geef, wordt er wel netjes een scrollbar zichtbaar.
Het lijkt er op dat de SessionsBorder denkt dat hij alle ruimte heeft, en daardoor toont de ScrollViewer geen scrollbar. Maar ik kom er maar niet achter waarom de SessionsBorder dat denkt.
Wie o wie kan mij hiermee verder helpen, want voor mijn gevoel heb ik alles al geprobeerd...