사용자가 새로운 클래스를 만들 수있는 다소 복잡한 메뉴 항목을 만들려고합니다. 내가 실행하고있는 문제는 메뉴 항목이 닫히는 숫자 업다운 (xceed 툴킷에서)을 클릭하면 심지어 StaysOpenOnClick
이 true로 설정된 경우에도 마찬가지입니다.어떻게 메뉴 하위 메뉴 항목을 열어 둘 수 있습니까?
사용자는이를 좋아하지 않습니다.
는, 재생 WPF 프로젝트를 만들고 NuGet을 통해 확장 WPF 툴킷을 추가하려면 다음 MainWindow를 클래스에 다음 코드를 드롭 :
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WhyDoesMyMenuItemCloseWhenClicked"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
x:Class="WhyDoesMyMenuItemCloseWhenClicked.MainWindow"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="21"/>
<RowDefinition />
</Grid.RowDefinitions>
<Menu FontWeight="Bold">
<MenuItem Header="_File">
<MenuItem StaysOpenOnClick="True">
<Grid Height="50" Width="50">
<xctk:IntegerUpDown/>
</Grid>
</MenuItem>
</MenuItem>
</Menu>
</Grid>
</Window>
내가 상하 정수의 텍스트 필드를 클릭하면, 메뉴가 닫힙니다.
왜 그런 일이 계속 발생합니까? 어떻게하면 이 아닌이 발생합니까?
을 달성 할 수 있습니다. 메뉴가 아닌 다른 요소가 전체 키보드 캡처/포커스를 얻고 있으므로 완전히 다른 이벤트 체인이 트리거됩니다. IsSubMenuOpen에 대한 변경 사항을 가로 채서 취소하거나 취소 할 수는 있지만 그 시도는 용납 할 수없는 행동으로 이어집니다. 그것은 사실, 열어 두었습니다. – Daniel
뭔가 다른, 당신은 자원에 MenuItem의 템플릿을 추출하고 당신이 제어 변수 (팝업)이 바꿀 수 : IsOpen = "{바인딩 IsSubmenuOpen, RelativeSource = {RelativeSource TemplatedParent}" " – Daniel
그래, 심지어 전체 트리를 강제로 메뉴를 열어두면 여전히 용납 할 수없는 결과가 발생합니다. 메뉴의 일부는 텍스트 필드에서 포커스를 강제로 추출합니다. 이것은 내가 일요일에 조사하려고하는 것보다 조금 더 있지만 행운을 빌어. 위 내용이 당신을 어떤 식 으로든 도왔 으면 좋겠습니다. – Daniel