首页 > 解决方案 > WPF:菜单栏+工具栏最佳实践

问题描述

我正在从 Qt 切换到 WPF,我想要创建一个包含菜单栏和工具栏的简单应用程序。所有命令都出现在菜单栏中,其中一些也可以从工具栏中访问。此外,我想为常用命令分配一些图标,并在菜单和工具栏中显示它们。

我在代码隐藏文件中定义了几个自定义命令,现在我正在处理 XAML 文件。当我想用图标定义一个菜单项时,我必须写类似

<Window.Resources>
    <BitmapImage x:Key="Connect" UriSource="Resources/connect.png" />
<Window.Resources>
...
<Menu>
    <MenuItem Command="local:Commands.Connect">
        <MenuItem.Icon>
            <Image Source="{StaticResource Connect}" Width="16" />
        </MenuItem.Icon>
    </MenuItem>
</Menu>

单个命令的工具按钮要求更高:

<ToolBar>
    <Button Command="local:Commands.Connect" >
        <StackPanel Orientation="Horizontal">
            <Image Source="{StaticResource Connect}" Width="32" />
            <TextBlock Text="Connect..." VerticalAlignment="Center" /> 
        </StackPanel>
    </Button>        
</ToolBar>

该代码有效,但在我看来,它对于更多的命令来说过于臃肿和混乱。我试图玩ControlTemplate,但TemplateBinding它非常有限,因为它只能使用控件的现有属性......

有没有办法让 XAML 定义更短、更可重用?例如,制作一个模板,然后用一行代码创建每个菜单项?

标签: c#wpfxamluser-interfacecontroltemplate

解决方案


推荐阅读