크기 조정 후 확장기의 내용에 맞게 WPF 창의 크기를 유지하는 방법
에 WPF가 표시되어 SizeToContent="Height"
에는 이창는다포다니됩함이 있습니다.<Expander />
최근 활동 목록을 표시합니다.제가 원하는 것은 익스팬더를 확장할 때 창 크기가 비례하여 커집니다.숨기면 창 크기가 비례하여 다시 조정됩니다.창 크기가 조정되고 창에 포함된 목록 보기가 새 공간을 사용하도록 커져야 합니다.(여기 있는 색깔은 신경쓰지 말고 제가 이해에 도움이 됩니다.
일반 보기
alt 텍스트 http://www.deploylx.com/so/wpfexpander/Open.png
접힘
alt 텍스트 http://www.deploylx.com/so/wpfexpander/Closed.png
새 공간으로 크기 조정
alt 텍스트 http://www.deploylx.com/so/wpfexpander/Expanded.png
지금까지 이것은 잘 작동합니다.문제는 다음과 같은 경우에 발생합니다.<Expander />
창 크기가 조정된 후 축소됩니다.창이 다시 축소되는 대신 목록 보기가 숨겨집니다.
크기 조정 후 축소
alt 텍스트 http://www.deploylx.com/so/wpfexpander/Collapsed.png
제 직감은 제게 다음과 같은 것을 말해줍니다.Height
윈도우의 크기가 조정될 때 윈도우의 크기가 설정되고 있으므로 윈도우의 크기가 오버라이드됩니다.SizeToContent
를 후 합니까창 크기를 조정한 후 창 크기를 내용에 맞게 유지하려면 어떻게 해야 합니까?
현재 XAML:
<Window x:Class="DeployLX.Licensing.Nlm.Admin.v3.DashboardWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Dashboard" Width="504" SizeToContent="Height" Height="275">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="E_xit" Command="{Binding Path=CloseCmd}" />
</MenuItem>
</Menu>
<Grid DockPanel.Dock="Top" Margin="8" ShowGridLines="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Grid.RowSpan="2" Grid.Row="0" Grid.Column="0" Margin="0,0,8,0">
<Rectangle Fill="Red" />
<TextBlock>ActiveCount</TextBlock>
</Grid>
<Grid Grid.Row="0" Grid.Column="1" Margin="0,0,0,4">
<Rectangle Fill="Green" />
<TextBlock>Authorization</TextBlock>
</Grid>
<Grid Grid.Row="1" Grid.Column="1" Margin="0,4,0,0">
<Rectangle Fill="Blue" />
<TextBlock>Authorization</TextBlock>
</Grid>
</Grid>
<Expander Header="Recent Activity" Margin="8" IsExpanded="True">
<ListView IsSynchronizedWithCurrentItem="True" MinHeight="100">
<ListView.View>
<GridView>
<GridViewColumn Header="Status"/>
</GridView>
</ListView.View>
</ListView>
</Expander>
</DockPanel>
</Window>
업데이트: 확장기의 축소된 이벤트를 듣고 Windows를 재설정해 보았습니다.SizeToContent
가 있어요.거의 효과가 있어요.그러면 창이 다시 접히지만 다시 펼치면 원래의 100픽셀 높이로 돌아갑니다.이 정보를 저장하고 캡처하는 것은 가능하지만, 냄새가 이상하고 오류가 발생하기 쉽습니다.
SizeToContent를 사용하려면 창 크기를 조정할 수 없도록 만들어야 합니다.또한 SizeToContent=를 사용하면 안 됩니다."높이"를 선택한 다음 명시적인 높이를 설정합니다.WPF가 창 높이, 사용자 설정 또는 콘텐츠 중 어느 것을 믿어야 하는지 생각해 보십시오.그냥 둘 사이를 왔다 갔다 할 수는 없습니다.
대응하는 가장 쉬운 방법은 다음과 같이 설정하여 수동 크기 조정을 방정식에서 제거하는 것입니다.ResizeMode="NoResize"
창문에하지만, 만약 당신이 가지고 있다면.WindowStyle="None"
Vista Aero에서는 창이 "크롬"을 완전히 제거하고 창이 어색하게 보인다는 것을 알게 되었습니다.또한, 사용자에게 크기 조정 기능을 제공하고 싶어하는 것처럼 보이기 때문에 다소 당황스럽습니다.
문제는 당신이 항상 원하는 두 가지 상반된 목표를 가지고 있다는 것입니다: 1.)SizeToContent="Height"
확장기 컨트롤을 접을 때, 2.) 원하는SizeToContent="Height"
사용자가 창 크기를 수동으로 조정하지 않은 경우(SizeToContent="Manual"), 이 경우 사용자의 수동 높이로 되돌리려고 할 경우.
네. 확장된 키를 직접 저장할 수는 없을 것 같습니다.WPF는 사용자가 다시 시작한 후 확장 시 사용자의 수동 높이를 기억하지 못합니다.SizeToContent="Height"
접힌 이벤트 핸들러에 있습니다.
이것을 사용해 보십시오. 필요에 부합해야 합니다.
<Window ...
SizeToContent="WidthAndHeight"
Height="Auto"
Width="Auto">
창 본문을 보기에 넣은 다음 보기를 유일한 자식으로 표시하면 비슷한 문제가 해결됩니다.
가장 바람직한 해결책은 아니지만, 효과가 있는 것 같습니다.
질문에서 확인한 바와 같이 높이를 두 배로 설정합니다.NaN은 SizeToContenthappiness로 재설정합니다.하지만 그것이 당신의 익스팬더의 크기를 기억할지는 모르겠습니다.켄트의 크기 조정 컨트롤을 사용하여 크기 조정 동작을 포함 창이 아닌 확장기로 이동할 수 있습니다.
언급URL : https://stackoverflow.com/questions/841767/how-do-you-keep-the-wpf-window-sized-to-content-with-an-expander-after-resize
'programing' 카테고리의 다른 글
복제할 수 없는 이유는 무엇입니까? (0) | 2023.05.05 |
---|---|
WPF textBox에 새 줄을 추가하지 않음을 입력합니다. (0) | 2023.05.05 |
LINQ: SingleOrDefault를 사용할 때와필터링 기준이 있는 FirstOrDefault() (0) | 2023.05.05 |
장고 세션 (0) | 2023.05.05 |
연결 문자열에서 Trusted_Connection과 Integrated Security의 차이점은 무엇입니까? (0) | 2023.05.05 |