Я переключаюсь с Qt на WPF, и я хочу создать простое приложение, содержащее как строку меню, так и панель инструментов. Все команды присутствуют в строке меню, а некоторые из них доступны также с панели инструментов. Также я хочу назначить некоторые значки для часто используемых команд и отобразить их как в меню, так и на панели инструментов.
Я определил несколько пользовательских команд в файле code-behind, и теперь я имею дело с файлом 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 более короткими и более пригодными для повторного использования? ? Например, создать шаблон, а затем создать каждый пункт меню с помощью одной строки кода?