2016-06-15 3 views
0

WPF에서 사이드 메뉴를 만들었습니다.동적으로 사이드 메뉴가 선택되었음을 나타냅니다.

 private void MenuItem_Click_CNTD(object sender, RoutedEventArgs e) 
     { 
      //*** Count Delimiters Menu Click *** 

      // ... Cast sender object. 
      System.Windows.Controls.MenuItem item = sender as System.Windows.Controls.MenuItem; 
      // ... Change Title of this window. 
      Title = "Process " + item.Header + " Files"; 


      lblDCTitle.Content = "Process to get mumber of delimiters in a large file."; 
      grdHeaderRows.Visibility = Visibility.Hidden; 
      mnuSideMenu.Height = 360; 
      grdMain.Height = 360; 
      grdDelimiterCount.Height = 400; 
      grdDelimiterCount.Visibility = Visibility.Visible; 
     } 

이 모두 잘 작동하지만 클릭 된 메뉴 항목을 강조하고 싶습니다 :

다음

 <Rectangle VerticalAlignment="Stretch" Width="1" Margin="2" Stroke="Black" /> 
     <MenuItem Header="Remove Headers" Click="MenuItem_Click_RH" /> 
     <MenuItem Header="Get Headers" Click="MenuItem_Click_GH" /> 
     <MenuItem Header="Count Delimiters" Click="MenuItem_Click_CNTD" /> 
     <Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" /> 
     <MenuItem Header="Close" Click="MenuItem_Click_Close" /> 
    </Menu> 

내 클릭 코드 : 여기 XAML입니다 . 이 작업을 수행하는 코드를 찾을 수 없습니다. 누구든지 아이디어가 있습니까?

고맙습니다.

답변

0
#Alexandru Turcan이 당신의 제안에 대해 내가 할 수 있었다

감사합니다. 이렇게하면 돼. 메뉴 항목이 많지 않고 완벽하게 작동합니다. 이 코드를 각 menu_click 루틴에 넣었습니다.

miRH.Background = SystemColors.ControlDarkBrush; 
miGH.Background = new SolidColorBrush(Color.FromArgb(100, 232, 249, 246)); 
miCD.Background = new SolidColorBrush(Color.FromArgb(100, 232, 249, 246)); 
0

처음으로 먼저. 어떻게 항목을 강조 표시 하시겠습니까? 배경 브러시를 변경하고 싶다면 먼저 클릭 한 배경 브러시를 설정하는 것입니다. 그러나 모든 클릭 이벤트 핸들러에 배경 브러시를 설정해야하기 때문에 하드 코딩 된 슈퍼 브러시가됩니다.

  • 정의 2 개 브러쉬 (하나 DEFAULTCOLOR, 다른 SelectedColor)가;에 첫 번째 옵션의

    또 다른, 더 최적화 된 버전입니다

  • 는 모든 메뉴 항목을 되세요 List<MenuItems> (당신이 YourMenu.Children 속성에서로 그들을 얻을 수
  • 모든 메뉴 항목에 가입 이벤트 핸들러를 가지고 당신은 이런 식으로 작업을 수행 할 수 있습니다.. 이벤트 헨델이의 색상을 변경합니다 YourMenuItemName.Click+=YourEventHanderName . SelectedColor와 메뉴 아이템의 나머지 부분에 대한 DEFAULTCOLOR 브러시에 클릭 항목;.

꽤 하드,하지만 어떻게 든 더 역동적 다음 이전 버전