내부 TextBlock의 성분을 중첩 그것에 번호와 각 블록은 레이저를 나타낸다. 이러한 블록은 DockPanel 내부의 캔버스에 배치됩니다. 또한 상단에 도킹 된 DockPanel 내부에는 빨간색지도 캔버스 뒤에 숨어있는 빨간색 TextBlock이 있습니다. 왜 이런 일이 일어나는 걸까요? TextBlock은 DockPanel의 상단에 도킹되어 있으며 캔버스는 도크 설정이 없으므로 나머지 공간을 채 웁니다. 또한 참고 : 윈도우 크기 조정시 전체 중앙 화면 공간을 적절히 조정하려면 ViewBox 내부에 DockPanel을 배치해야했습니다. 그런 다음 필요할 때 스크롤 막대를 표시 할 수 있도록 ScrollViewer에 ViewBox를 배치해야했습니다.
다음은 가운데 화면의 XAML 코드입니다 (참고 : 창 자식은 DockPanel이며 메뉴는 상단에 도킹되고 왼쪽 단추 패널은 왼쪽에 도킹되며 오른쪽 단추 패널은 도킹 됨). 권리는, 상태 표시 줄에이 문제 해결에 어떤 도움이 크게 감사합니다
<ScrollViewer
Name="centerScreenScrollViewer"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="{Binding IsScrollbarsVisible, Converter={StaticResource BoolToScrollbarVisConverter}, FallbackValue=Hidden}">
<Viewbox>
<DockPanel
LastChildFill="True">
<TextBlock
DockPanel.Dock="Top"
Name="tbkFullVisual"
Style="{StaticResource tbkStyleBlue}"
Foreground="Red"
IsEnabled="{Binding FullVisual}"
HorizontalAlignment="Center"
VerticalAlignment="Top"
FontSize="24">
*** This Print Requires Full Visual Inspection! ***
</TextBlock>
<Canvas x:Name="mapCanvas">
<ContentPresenter Content="{Binding MapCanvas}"/>
</Canvas>
</DockPanel>
</Viewbox>
</ScrollViewer>
다음 XAML 코드에 의해 정의된다 당신이 중앙 화면에서 볼 수있는 바닥 및 모든)에 도킹됩니다.
감사합니다,
카일
잘 작동합니다. 고마워, 나는이 대답을 받아 들일 것이다. 하지만 먼저, 당신을위한 또 하나의 빠른 질문 : 캔버스 아이들이 그 경계를 벗어나지 않도록 어떻게 만들 수 있습니까? ClipToBounds = True를 사용했지만 캔버스에 정의 된 크기가 없으므로 나사가 위로 고정됩니다. 어떤 제안? 내가 할 수있는 유일한 생각은 OnWindowResize를 재정의하는 것입니다. 여기서 캔버스의 높이와 너비를 뷰포트 높이와 뷰포트의 뷰포트 너비로 설정합니다. – kformeck
'ViewBox'를 다시 생각하고 대신'DockPanel'을 가지고 있습니다. 'ViewBox'의 주요 목적은 크기 조정시 가로 세로 비율과 스케일링을 유지하는 것입니다. 이 경우 캔버스가 자동으로 사용 가능한 공간을 채우고 싶다면'ViewBox'가 막을 수 있습니다. Canvas의 'Width'를 ViewBox의'Width '에 바인딩 한 다음'Height '를 바인드하려고 시도 할 수도 있지만 변환기를 사용하여'TextBlock' 높이를 뺍니다. 그러나 이것은 정말로 추한 것입니다. @kformeck – Matt