我在WPF中创建了一个侧边菜单。这是xaml:
<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>
这是我的点击代码:
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;
}
这一切都很好,但我想突出显示点击的菜单项。我找不到代码来做这件事。有人有什么想法吗?
谢谢
答案 0 :(得分:0)
首先要做的事情。你想如何突出这个项目?如果你想改变它的背景画笔首先想到的是设置点击的menuitem
的背景画笔,但这将是超级硬编码的,因为你必须设置背景画笔在每个点击事件处理程序中。
第一个选项的另一个更优化的版本是:
List<MenuItems>
中的所有菜单项(您可以从YourMenu.Children
属性获取。YourMenuItemName.Click+=YourEventHanderName
。
handel事件会将Clicked项目的颜色更改为SelectedColor,并将其余的MenuItems更改为DefaultColor画笔; 相当硬编码,但在某种程度上比先前版本更具动态性。
答案 1 :(得分: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));