Визуальная кисть как иконка в ContextMenu wpf - PullRequest
0 голосов
/ 27 мая 2018

Я хочу использовать Visual Brush в качестве значка в контекстном меню (в виде дерева) в моем wpf usercontrol.

У меня есть словарь ресурсов (отдельный файл иконки xaml), несколькостроки из файла приведены ниже:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<VisualBrush x:Key="Trashcan"
             Stretch="Uniform">

Я слил словари в usercontrol, а также проверил, что он был добавлен и доступен в коде usercontrol xaml.

Код в usercontrol xaml (view) приведен ниже, где должны использоваться значки

 <ContextMenu x:Key=xxxxxxxx>
                <MenuItem Header="Delete" Command="{Binding xxxxxx, Source=xxxxxxx}" CommandParameter="{Binding}" IsEnabled="xxxxxxxxxx}" Icon="{StaticResource Trashcan}"/>
 </ContextMenu>

Теперь проблема Я не вижу значки в контекстном меню, картинка прилагается ниже:

enter image description here

До сих пор я пробовал подход, приведенный в этой ссылке Использование иконок MahApps с ContextMenu но у меня это не сработало.

Есть ли какой-то другой способ, кроме указанного в вышеупомянутой ссылке, который можно использовать для отображения визуальной кисти в виде значка в контекстном меню.

ПРИМЕЧАНИЕ : я не могу использовать menuitem.icна -> изображение, поскольку у меня есть ограничения, исходящие от других компонентов приложения.

ПРИМЕЧАНИЕ : Я не знаю, важно ли здесь утверждать, что Форма размещает мой WPF usercontrol .

1 Ответ

0 голосов
/ 27 мая 2018

Вам нужно установить Image на MenuItem.Icon.

<MenuItem.Icon>
     <Image Style="{StaticResource Trashcan}"/>
</MenuItem.Icon>

Определить стиль для этого изображения в словаре ресурсов:

<Style x:Key="Trashcan" TargetType="Image">
    <Setter Property="Source" Value="/ProjectName;component/Images/Trashcan.png"/>
    <Setter Property="Width" Value="24"/>
</Style>

добавлено:

Если вы не можете использовать MenuItem.Icon, вот способ, который вы можете сделать:

<MenuItem.Header>
    <Grid>
        <TextBlock Text="........"/>
        <Image HorizontalAlignment="Left" Width="24" Margin="-24,0,0,0" 
               Style="{StaticResource Trashcan}"/>
    </Grid>
</MenuItem.Header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...