2016-11-20 3 views
0

사용자가 새로운 클래스를 만들 수있는 다소 복잡한 메뉴 항목을 만들려고합니다. 내가 실행하고있는 문제는 메뉴 항목이 닫히는 숫자 업다운 (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> 

내가 상하 정수의 텍스트 필드를 클릭하면, 메뉴가 닫힙니다.

왜 그런 일이 계속 발생합니까? 어떻게하면 이 아닌이 발생합니까?

+0

을 달성 할 수 있습니다. 메뉴가 아닌 다른 요소가 전체 키보드 캡처/포커스를 얻고 있으므로 완전히 다른 이벤트 체인이 트리거됩니다. IsSubMenuOpen에 대한 변경 사항을 가로 채서 취소하거나 취소 할 수는 있지만 그 시도는 용납 할 수없는 행동으로 이어집니다. 그것은 사실, 열어 두었습니다. – Daniel

+0

뭔가 다른, 당신은 자원에 MenuItem의 템플릿을 추출하고 당신이 제어 변수 (팝업)이 바꿀 수 : IsOpen = "{바인딩 IsSubmenuOpen, RelativeSource = {RelativeSource TemplatedParent}" " – Daniel

+0

그래, 심지어 전체 트리를 강제로 메뉴를 열어두면 여전히 용납 할 수없는 결과가 발생합니다. 메뉴의 일부는 텍스트 필드에서 포커스를 강제로 추출합니다. 이것은 내가 일요일에 조사하려고하는 것보다 조금 더 있지만 행운을 빌어. 위 내용이 당신을 어떤 식 으로든 도왔 으면 좋겠습니다. – Daniel

답변

0

해결 방법을 찾았습니다. 그것은 일종의 끔찍한 일종의 해법이지만 일을 꽤 잘합니다.

변경하면 MenuItem 내에 MenuItem을 생성해야합니다. 그런 다음 MenuItem 하위의 컨트롤을 MenuItem.Header 속성으로 정의하고 MenuItemStaysOpenOnClick 속성을 true로 설정합니다.

<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" StaysOpenOnClick="True"> 
       <MenuItem Header="_StaysOpenOnClick"> 
        <MenuItem StaysOpenOnClick="True"> 
         <MenuItem.Header> 
          <xctk:IntegerUpDown/> 
         </MenuItem.Header> 
        </MenuItem> 
       </MenuItem> 
      </MenuItem> 
     </Menu> 
    </Grid> 
</Window> 
-1

당신이 더 한 번의 클릭보다 진행되고, 텍스트 필드를 입력하면 StaysOpenOnClick 재산권의 사용이

+0

시도해보십시오. 작동하지 않습니다. 메뉴 항목의 머리글에 내용을 만들고 열려는 메뉴 항목에 해당 메뉴 항목을 배치해야합니다. 포함 된 메뉴 항목의 속성을 True로 설정하면 위의 대답에 따라 원하는 효과를 얻을 수 있습니다. – Will

관련 문제