문제

내부에 확장기를 사용하고 있습니다. 리사이저 (크기 조정 그리퍼가 있는 ContentControl) 컨트롤이 처음 나타날 때 적절하게 확장/축소됩니다.크기를 조정하면 아래 설명된 것처럼 확장기가 제대로 축소되지 않습니다.내 응용 프로그램에서 Snoop을 실행했는데 Expander나 해당 구성 요소에 설정된 높이가 표시되지 않습니다.

Expander가 다시 제대로 축소되도록 하려면 어떻게 해야 합니까?또는 Expander를 슬프게 만들지 않도록 Resizer를 수정하는 것도 효과가 있습니다.

확장기 문서에 따르면 다음과 같습니다.

"Expander가 올바르게 작동하려면 ExpandDirection 속성이 Down 또는 Up으로 설정된 경우 Expander 컨트롤에 Height를 지정하지 마십시오.마찬가지로 ExpandDirection 속성이 Left 또는 Right로 설정된 경우 Expander 컨트롤에 Width를 지정하지 마십시오.확장된 콘텐츠가 표시되는 방향으로 Expander 컨트롤의 크기를 설정하면 크기 매개 변수로 정의된 영역이 주변에 테두리와 함께 표시됩니다.이 영역은 창이 축소된 경우에도 표시됩니다.확장된 창의 크기를 설정하려면 Expander 컨트롤의 콘텐츠 또는 콘텐츠를 포함하는 ScrollViewer에 크기 치수를 설정하세요.

도움이 되었습니까?

해결책 2

그 이후 로이 특정 문제를 조롱 할 기회가 없었지만 최근에는 설정 높이 또는 너비가 두 배로 늘어나는 것을 발견했습니다.

아이러니하게도, 이것은 내가 처음에 사용했던 Resizer 컨트롤의 코드를 읽는 것입니다.

다른 팁

팽창 안에 레인저를 움직여 문제를 해결했지만 다른 곳에서 Expander 문제가 발생하므로 누군가가 있다면 여전히 대답을 원할 것입니다.

감사해요

답변이 조금 늦었지만(2년 이상), 안 하는 것보다는 늦는 게 낫겠죠?

어쨌든, 나는 이 정확한 문제에 부딪혔고 열 너비를 저장하고 재설정하는 몇 가지 코드 숨김으로 문제를 해결할 수 있었습니다.

첫 번째 열에 일부 내용이 있고 두 번째 열에 GridSplitter가 있고 세 번째 열에 Expander가 있는 3개의 열로 구성된 Grid가 있습니다.GridSplitter가 이동된 후 Expander가 포함된 열의 너비가 자동에서 고정 크기로 변경되는 것 같습니다.이로 인해 확장기가 더 이상 예상대로 축소되지 않습니다.

그래서 개인 변수와 두 개의 이벤트 핸들러를 추가했습니다.

    private GridLength _columnWidth;

    private void Expander_Expanded (object sender, RoutedEventArgs e)
    {
        // restore column fixed size saved in Collapse event
        Column2.Width = _columnWidth;
    }

    private void Expander_Collapsed (object sender, RoutedEventArgs e)
    {
        // save current column width so we can restore when expander is expanded
        _columnWidth = Column2.Width;

        // reset column width to auto so the expander will collapse properly
        Column2.Width = GridLength.Auto;
    }

Expander가 축소되면 Column2의 고정 너비(백그라운드에서 자동으로 자동으로 변경됨)를 저장한 다음 너비를 Auto로 재설정합니다.

그런 다음 확장기가 확장되면 열을 다시 고정 너비로 ​​복원하여 축소되기 전과 동일한 너비로 확장합니다.

참조용 XAML은 다음과 같습니다.

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition x:Name="Column2" Width="Auto" />
    </Grid.ColumnDefinitions>
    <ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
        <!-- some content goes here -->
    </ScrollViewer>
    <GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch"
         Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="5"
         Background="Black" />
    <Expander Grid.Column="2" ExpandDirection="Left"
         IsExpanded="True" Style="{StaticResource LeftExpander}"
         Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
        <Grid>
            <TextBox TextWrapping="Wrap" Height="Auto" Margin="0 5 5 5" />
        </Grid>
    </Expander>
</Grid>

그리드 플리터가있는 그리드 내부의 Expander를 사용하여 비슷한 문제를 겪었습니다. 확장 /붕괴 동작은 스플리터를 움직일 때까지 잘 작동합니다. 나중에 팽창이 무너지지 않고 내용물 만 숨 깁니다.

나는 아직도 해결 방법을 찾고있다 ... 결국 하나를 찾았습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top