WPF: строка меню + панель инструментов лучшие практики - PullRequest
0 голосов
/ 29 января 2020

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

...