c# - 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 定义更短、更可重用?例如,制作一个模板,然后用一行代码创建每个菜单项?
解决方案
推荐阅读
- node.js - 通过服务密钥的 Google API 身份验证成功,但在后续请求中仍会获得“401 Login Required”
- angular - 导航后角度路由中断
- sonarqube - Maven Sonar Scanner 排除目录
- c - 如何让多个 POSIX 线程等待另一个线程开始
- jelastic - 为什么自定义 SSL 需要公共 IP?
- mysql - 用于获取子节点所有父节点的递归 CTE 查询的 WHERE 语句
- regex - 仅打印特定部分的配置文件中的行
- c# - C# 尝试解密文件以仅处理内存
- mocking - NSubstitute 无法确定项目“运行所有测试”时要使用的参数规范
- android - FCM Android - 点击通知 - 打开网页视图