WPF의 '도움말' 메뉴 항목을 오른쪽 정렬하려면 어떻게 해야 합니까?
XAML 파일에 다음 섹션이 있습니다.
<Menu Width="Auto" Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Header="Exit"/>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Cut"/>
</MenuItem>
<MenuItem Header="Help">
<MenuItem Header="About"/>
</MenuItem>
</Menu>
그 결과 다음과 같습니다.
+-------------------------------------------+
| File Edit Help |
+-------------------------------------------+
| |
필요한 경우 어떻게 해야 합니까?Help
오른쪽 메뉴 항목:
+-------------------------------------------+
| File Edit Help |
+-------------------------------------------+
| |
같은 원리로 이번에는 그리드가 필요 없기 때문에 아이템의 수를 알 필요가 없습니다.도움말을 제외한 모든 항목을 왼쪽에 할당합니다. : ).
<Menu Height="20" Background="#FFA9D1F4">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="File">
<MenuItem Header="Exit"/>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Cut"/>
</MenuItem>
<MenuItem Header="Help" HorizontalAlignment="Right">
<MenuItem Header="About"/>
</MenuItem>
</Menu>
메뉴 항목이 몇 개인지 항상 알고 있다면(그 때문에 이 답변이 취약해진다) 다른 가능한 답변은 메뉴를 정의하는 것입니다.항목패널을 그리드로 설정하고 메뉴를 스트레치로 설정하고 그리드를 설정합니다.ColumnDefinitions를 적절하게 MenuItems를 적절한 그리드로 설정합니다.열을 지정하고 마지막 메뉴 항목의 수평 정렬을 오른쪽으로 설정합니다.
<Menu Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top" HorizontalAlignment="Stretch">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="File" Grid.Column="0">
<MenuItem Header="Exit"/>
</MenuItem>
<MenuItem Header="Edit" Grid.Column="1">
<MenuItem Header="Cut"/>
</MenuItem>
<MenuItem Header="Help" Grid.Column="2" HorizontalAlignment="Right">
<MenuItem Header="About"/>
</MenuItem>
</Menu>
원래 답변을 변경합니다. (HorizontalAlignment="Stretch"를 사용하면) Edit(편집) 메뉴가 메뉴 표시줄을 가로질러 Help(도움말) 메뉴까지 확장됩니다.
또한 Rockke의 하위 메뉴 정렬 제안을 통합하는 중...
<Menu Height="20" Background="#FFA9D1F4">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="File">
<MenuItem Header="Exit"/>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Cut"/>
</MenuItem>
<MenuItem Header="_Help" HorizontalAlignment="Right" FlowDirection="RightToLeft">
<MenuItem Header="About..." FlowDirection="LeftToRight"/>
</MenuItem>
</Menu>
<Menu DockPanel.Dock="Top">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="_File">
<MenuItem Click="Exit_Clicked" Header="E_xit" />
</MenuItem>
<MenuItem Header="_User">
<MenuItem Click="ChangePassword_Clicked" Header="_Change Password..." />
</MenuItem>
<!-- Right adjusted help menu with sub menu keeping inside the main window -->
<MenuItem Header="_Help" HorizontalAlignment="Right" FlowDirection="RightToLeft">
<MenuItem Click="About_Clicked" Header="_About..." FlowDirection="LeftToRight" />
</MenuItem>
</Menu>
원래 답변에 약간의 추가 사항만 있습니다.두 가지 흐름 방향을 포함하면 하위 메뉴가 창 안에 유지됩니다.
쉬운 방법은 없을 것 같아요.메뉴는 모든 항목을 한쪽에 유지하며 메뉴의 수평 컨텐츠 정렬 또는 MenuItem의 수평 정렬도 무시합니다.
하지만 해결 방법을 찾을 수 있습니다.마진 속성은 기능합니다.따라서 Help Menu Item의 여백을 Menu의 폭에 바인딩할 수 있습니다.그러나 폭에서 마진을 계산하려면 변환기를 사용해야 합니다.
나는 그런 일을 하는 것이 좋은 것인지 모르겠다.난 안 그럴 거야하지만 정말 원한다면, 그렇게 해야 해요.
기본 WrapPanel 대신 DockPanel 또는 Grid를 사용할 경우 한 가지 또는 두 가지 잠재적인 단점이 있습니다.
- 창이 너무 작아서 모든 메뉴 항목을 한 줄에 표시할 수 없는 경우 다음 줄로 줄 바꿈되지 않습니다.
- ContextMenu 등 다른 컨텍스트에서 사용하기 위해 메뉴 항목을 공유하는 경우 마지막 항목은 오른쪽 정렬됩니다.
언급URL : https://stackoverflow.com/questions/3023638/how-do-i-right-align-the-help-menu-item-in-wpf
'programing' 카테고리의 다른 글
현재 배치 파일 디렉터리 가져오기 (0) | 2023.04.16 |
---|---|
Git 저장소에 .gitignore를 커밋해야 합니까? (0) | 2023.04.16 |
MVVM을 사용한WPF 대화상자 처리 (0) | 2023.04.16 |
SQL Server의 LIMIT 및 OFFSET과 동등합니까? (0) | 2023.04.16 |
bash: 출력의 n번째 열을 얻는 가장 빠른 방법 (0) | 2023.04.16 |