工具欄菜單和前面的menu菜單有類似之處,不過通常放在工具欄托盤控件內。
而且 工具欄托盤可以處理諸如放置和大小調整等類似功能。
<Window x:Class="菜單.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:菜單"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200">
<Window.CommandBindings>
<CommandBinding Command="New" CanExecute="CommonCommandBinding_CanExecute" />
<CommandBinding Command="Open" CanExecute="CommonCommandBinding_CanExecute" />
<CommandBinding Command="Save" CanExecute="CommonCommandBinding_CanExecute" />
</Window.CommandBindings>
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button Command="New" Content="New" />
<Button Command="Open" Content="Open" />
<Button Command="Save" Content="Save" />
</ToolBar>
<ToolBar>
<Button Command="Cut" Content="Cut" />
<Button Command="Copy" Content="Copy" />
<Button Command="Paste" Content="Paste" />
</ToolBar>
</ToolBarTray>
<TextBox AcceptsReturn="True" />
</DockPanel>
</Window>
using System.Windows;
using System.Windows.Input;
namespace 菜單
{
/// <summary>
/// MainWindow.xaml 的交互邏輯
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void CommonCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
}
}
工具欄toolbar與menu菜單的區別:
① 先用ToolBarTray工具欄托盤聲明,再ToolBar聲明,裏面放置button,其命令綁定和內容content都由button實現,不能顯示快捷鍵提示。能調整放置位置和大小。
② menu是先用menu聲明,子項用menuitem聲明,其命令綁定由menuitem,內容由header(內置命令自動)實現,能顯示快捷鍵提示。能調整放置位置和大小。
③menuitem使用圖標,需要把image放置在 <MenuItem.Icon>之內。
<MenuItem Header="_Manage users">
<MenuItem.Icon>
<Image Source="/WpfTutorialSamples;component/Images/user.png" />
</MenuItem.Icon>
</MenuItem>
header指明文本,image指明圖標。
而toolbar使用圖標,是放在button之內,有了圖標就不能有content文本
<Button Command="Copy" ToolTip="Copy selection to Windows Clipboard.">
<Image Source="/WpfTutorialSamples;component/Images/copy.png" />
</Button>
如果想既有圖標,又有文本指示,必須添加textblock控件
<Button Command="Copy" ToolTip="Copy selection to Windows Clipboard.">
<StackPanel Orientation="Horizontal">
<Image Source="/WpfTutorialSamples;component/Images/copy.png" />
<TextBlock Margin="3,0,0,0">Copy</TextBlock>
</StackPanel>
</Button>
④工具欄托盤不僅可以放置button,還能放任何wpf控件。
<Window x:Class="菜單.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:菜單"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="300">
<Window.CommandBindings>
<CommandBinding Command="New" CanExecute="CommonCommandBinding_CanExecute" />
<CommandBinding Command="Open" CanExecute="CommonCommandBinding_CanExecute" />
<CommandBinding Command="Save" CanExecute="CommonCommandBinding_CanExecute" />
</Window.CommandBindings>
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button Command="New" Content="New" />
<Button Command="Open" Content="Open" />
<Button Command="Save" Content="Save" />
<Separator />
<Label>Font size:</Label>
</ToolBar>
<ToolBar>
<ComboBox>
<ComboBoxItem>10</ComboBoxItem>
<ComboBoxItem IsSelected="True">12</ComboBoxItem>
<ComboBoxItem>14</ComboBoxItem>
<ComboBoxItem>16</ComboBoxItem>
</ComboBox>
</ToolBar>
</ToolBarTray>
<TextBox AcceptsReturn="True" />
</DockPanel>
</Window>
以上示例還在toolbar中放了分隔符,lable以及combobox控件