Установить значок для MenuItem VB - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно создать контекстное меню из кода в WPF.Все отлично работает, кроме Icon, я установил значок MenuItem следующим образом:

Dim tsmi As New MenuItem() With {
            .Header = cmd.Name,
            .Icon = cmd.Icon,
            .Tag = cmd
        }

, где cmd.Icon - это System.Drawing.Image.Вместо значка я получаю строку System.Drawing.Image, где должно быть изображение.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Документация MenuItem показывает этот XAML:

<MenuItem Header="New">
  <MenuItem.Icon>
    <Image Source="data/cat.png"/>
  </MenuItem.Icon>
</MenuItem>

Таким образом, вы можете четко использовать элемент управления WPF Image для значка.Документация к свойству Image.Source содержит ссылку на тему, озаглавленную «Как: использовать элемент изображения», и включает в себя следующий пример кода:

' Create Image Element 
Dim myImage As New Image()
myImage.Width = 200

' Create source 
Dim myBitmapImage As New BitmapImage()

' BitmapImage.UriSource must be in a BeginInit/EndInit block
myBitmapImage.BeginInit()
myBitmapImage.UriSource = New Uri("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water Lilies.jpg")

' To save significant application memory, set the DecodePixelWidth or   
' DecodePixelHeight of the BitmapImage value of the image source to the desired  
' height or width of the rendered image. If you don't do this, the application will  
' cache the image as though it were rendered as its normal size rather then just  
' the size that is displayed. 
' Note: In order to preserve aspect ratio, set DecodePixelWidth 
' or DecodePixelHeight but not both.
myBitmapImage.DecodePixelWidth = 200
myBitmapImage.EndInit()
'set image source
myImage.Source = myBitmapImage

Это дает вам все, что вам нужно.Я никогда не использовал ни один из этих типов или членов прежде.Я просто потратил некоторое время на чтение соответствующей документации.

0 голосов
/ 04 октября 2018

System.Drawing.Image от WinForms, вам нужно System.Windows.Controls.Image.

. Вы можете сделать так:

New Image() With {.Source = New BitmapImage(New Uri("pack://application:,,,/Your.Assembly.Name;component/Images/image.png"))}

... где у вас есть файл с именемimage.png (помечено как Build Action = Resource) в папке Images в сборке Your.Assembly.Name.dll.

...