2016-06-15 5 views
0

Ich habe ein Seitenmenü in einem WPF erstellt. Hier ist die XAML:Dynamisch zeigen, dass ein Seitenmenü ausgewählt wurde

 <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> 

Hier ist mein Klick-Code:

 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; 
     } 

Das alles funktioniert gut, aber ich möchte den Menüpunkt markieren, auf den geklickt wurde . Ich kann keinen Code dafür finden. Hat jemand Ideen?

Vielen Dank

Antwort

0

Dank #Alexandru Turcan für Ihren Vorschlag, den ich konnte. Mach es so, ich tue es nicht viele Menüpunkte und das funktioniert perfekt für mich. Ich habe diesen Code in jede menu_click-Routine eingefügt.

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

Erste Dinge zuerst. Wie möchten Sie den Artikel hervorheben? Wenn Sie den Hintergrundpinsel ändern möchten Zuerst sollten Sie den Hintergrundpinsel des angeklickten menuitem festlegen, aber das wird super hartcodiert sein, da Sie den Hintergrundpinsel in jedem Click-Event-Handler setzen müssen.

Eine weitere, optimierte Version der ersten Option ist:

  • definiert Habe 2 Bürsten (Ein Default, andere SelectedColor);
  • Haben alle Menüpunkte in ein List<MenuItems> (Sie können sie durch von YourMenu.Children Eigenschaft erhalten können
  • Haben Sie einen Eventhandler zu jedem Menüpunkt abonniert Sie es wie folgt tun:... YourMenuItemName.Click+=YourEventHanderName Die Veranstaltung Händels die Farbe ändern das geklickt Artikel auf die SelectedColor und auf die Default Bürste für den Rest MenuItems;.

recht hartcodiert, aber irgendwie dynamischere dann Vorversion

Verwandte Themen