Canvas가 Dock Panel의 다른 Children을 덮는 이유는 무엇입니까? 내가 XAML에서 표준 규칙에 따라 윈도우의 클라이언트 영역의 맨 아래에있는 클라이언트 영역의 상단에 메뉴 바 및 상태 표시 줄을 설정하고있어 다음과 같이Dockpanel에서 피어 컨트롤을 다루는 캔버스가 왜입니까?
그런 다음<Window x:Class="RichCoreW.ScenEditWnd"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ScenEditWnd" Height="490" Width="776" HorizontalAlignment="Right">
<DockPanel Name="mapDockP">
<Menu IsMainMenu="True" DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Save" Name="menuISave" Click="menuISave_Click"/>
<MenuItem Header="Make Playable" Click="MakePlayable" />
</MenuItem>
<MenuItem Command="ApplicationCommands.Help" />
</Menu>
<StackPanel DockPanel.Dock="Bottom" Name="stackPanel1" Orientation="Horizontal" background="Yellow">
<Label Content="Playable:" Name="label1" />
<Label Name="labPlayable" />
</StackPanel>
</DockPanel>
</Window>
나는 추가 C# 코드에서 Canvas를 상속 한 MapCanvEdit 클래스의 인스턴스입니다. Dockpanel에 추가되는 마지막 아이로서 Dockpanel의 나머지 공간을 차지해야합니다. 그러나 클라이언트 영역 전체를 커버하는 메뉴 및 상태 표시 줄을 포함합니다. 정확히 말하자면, 다른 두 개의 스택 패널을 덮는 캔버스의 자식입니다. 캔버스 (MapCanvEdit)이 비어있는 경우에는 메뉴 및 상태 표시 줄을 볼 수 있습니다 : 나는 단순위한 다른 방법을 떠 났어요
public partial class ScenEditWnd : Window
{
ScenC scenC;
MapCanvEdit mapCanvE;
public ScenEditWnd(ScenC scenCI)
{
InitializeComponent();
scenC = scenCI;
mapCanvE = new MapCanvEdit(scenC);
mapDockP.Children.Add(mapCanvE);
MouseWheel += mapCanvE.Zoom;
mapCanvE.SizeChanged += delegate { mapCanvE.DrawHexs(); };
ContentRendered += delegate { mapCanvE.DrawHexs(); };
labPlayable.Content = scenC.playable.ToString();
}
}
. 어떤 도움을 주셔서 감사합니다!
감사합니다. WPF의 경우 매우 간단합니다. 확인하고 클리핑이 성능을 향상시키지 않는 것 같습니다. WPF는 화면 밖으로 벗어나는 아이들을 렌더링하는 데 시간을 낭비하는 것 같습니다. –
이것이 맞습니다. 그렇게하지 말라고하면 UI 가상화 기술 (google에 키워드 : wpf 가상 화 캔버스)을 사용하는 것이 좋습니다. – Anvaka