2017-01-31 5 views
0

나는 여기에 방법을 사용하여 이미지로 변환하고 제어가 있습니다 WPF XAML 컨트롤은 잘못된 레이아웃을 가지고

Force rendering of a WPF control in memory

불행하게도 나는 복잡한 레이아웃을 가지고 있고 그것을 제어 것 같다을 'Collapsed'는 실제로 출력 이미지에서 제대로 숨겨지지 않습니다.

는 시도 :

  • 통화 제어의 UpdateLayout 여러 번
  • 크기 변경 뷰 박스를 사용하여 1 개 픽셀
  • 에 의해
  • 뭔가가 바닥에 정렬되어있는 경우 DockPanel에 영향을 미칠 것으로 보인다

변환기로 숨겨져 있습니다.

<DockPanel LastChildFill=True> 
    <Something Dock.Panel="Top" /> 
    <Something Dock.Panel="Bottom" Binding="{Binding XXXXX, Converter={StaticResource booleanConverter}}"/> 
    <Something Dock.Panel="Bottom" Binding="{Binding YYYYY, Converter={StaticResource booleanConverter}}"/> 
    <Something /> 
</DockPanel> 

모든 것이 Xaml 편집기에서 제대로 표시되거나 런타임에 실제 보이는 컨트롤로 사용되는 경우 모든 것이 올바르게 표시됩니다.

답변

0

결국 나는 요소에 Collapsed을 적용하는 대신 높이를 0으로 설정하기 위해 트리거를 사용해야했습니다. 물론 이것은 필요한 경우 중첩 패널을 사용하여 여백을 패딩으로 변환해야 함을 의미합니다.

이 예에서는 경계 컨트롤이있어서 Visibility 속성을 제거하고 대신이 트리거를 사용해야했습니다.

<Border> 
     <Border.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding XXXXX, Converter={StaticResource booleanConverter}}" Value="true"> 
         <Setter Property="Border.Height" Value="0" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </Border.Style> 
    </Border>