Mam do czynienia z jednym problemem dotyczącym zmiany rozmiaru okna głównego po rozwinięciu ekspandera i ręcznym przeskalowaniu okna do większego rozmiaru metodą przeciągania/upuszczania. Ekspander jest zwinięty, ale okno główne nie jest przeskalowane, aby dopasować rozmiar wewnętrznej części.Ekspander WPF i zmiana rozmiaru okna po zwinięciu?
Komponenty są umieszczane w kolumnach siatki o automatycznym rozmiarze, a główne okno ma rozmiar WidhtAndHeight.
Główny zestaw właściwość okna:
SizeToContent="WidthAndHeight"
Zrobiłem rozwiązanie poprzez kod związany i obsługą zdarzeń (na zwijać i rozwijać wydarzenia). Ale myślę, że WPF ma lepsze podejście ...
realizacjaExpander XAML:
<Expander Name="expander" Grid.Column="2" Grid.Row="0" Grid.RowSpan="5" ExpandDirection="Right" ToolTip="Expand window for history details" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed" SizeChanged="expander_SizeChanged" >
<Expander.Header>
<TextBlock RenderTransformOrigin="0.3,1.5">
<TextBlock.RenderTransform>
<TransformGroup>
<RotateTransform Angle="90" />
</TransformGroup>
</TextBlock.RenderTransform>
Show history
</TextBlock>
</Expander.Header>
<StackPanel>
<ListView ItemsSource="{Binding Path=HistoryList}" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" MaxHeight="350" >
<ListView.View>
<GridView>
<GridViewColumn Header="Operation" DisplayMemberBinding="{Binding Operation}" />
<GridViewColumn Header="Result" DisplayMemberBinding="{Binding Result}" />
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Expander>
Czy ktoś ma pojęcia jak inteligentny rozwiązać tę sprawę?
Dzięki za poradę.
Dzięki za odpowiedź, ta opcja również przyszedł mi do głowy, ale rozwiązanie nie będzie działać. Każda zmiana wielkości wywołania do wydarzenia nie działa z "bieżącą" wysokością i szerokością elementów sterujących w środku. Zmiana rozmiaru jest restartowana do wartości początkowych h-w. – stenly
Używam tego podejścia: Utworzono procedurę obsługi zdarzeń dla extender_collapsed, w której zrestartuję właściwość mainWindow sizeToContent na wartość wyliczenia "Szerokość". To działa, ale nowa wartość w/h elementów sterujących wewnątrz ekstendera po zmianie rozmiaru zostanie zapomniana, gdy kontrola zostanie zwinięta i rozszerzona. Ciekaw jestem, czy istnieje rozwiązanie w języku XAML w warstwie widoku ... – stenly