2017-10-12 7 views
2

EllipseMenuItemsに追加したいと思っています。ContextMenuです。MenuItemに色付き楕円を追加する

悲しいことに、私はこれを動作させることができなかった[何も表示されません]。

Canvas canvas = new Canvas() { Height = 16, Width = 16 }; 
canvas.Children.Add(new System.Windows.Shapes.Ellipse() 
{ 
    Height = 16, 
    Width = 16, 
    Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Colors.Red) 
}); 
System.Windows.Media.Imaging.RenderTargetBitmap bmp = new System.Windows.Media.Imaging.RenderTargetBitmap((int)canvas.Width, (int)canvas.Height, 96, 96, System.Windows.Media.PixelFormats.Default); 

bmp.Render(canvas); 
MenuItem tmp = new MenuItem(); 
tmp.Header = "Away"; 
tmp.Icon = new System.Windows.Controls.Image() 
{ 
    Source = bmp 
}; 

AddContextMenuEntry(tmp); 

ここで何が間違っているのですか?

期待される結果はsthです。このような:

                                                                        enter image description here

+0

どのように* "これを動作させることができなかったのですか?"あなたは欠けている[エンコーダ](https://wpftutorial.net/BitmapFromVisual.html)。 – Sinatr

答えて

5

不要画像                                           :Iconでありますobject。これは任意のコンテンツになります。ビジュアル要素、任意の値、任意のクラスのインスタンス。ビューモデルの場合は、暗黙的なDataTemplateが必要です。しかし、赤い円は簡単です。

MenuItem tmp = new MenuItem(); 
tmp.Header = "Away"; 

tmp.Icon = new System.Windows.Shapes.Ellipse() 
{ 
    Height = 16, 
    Width = 16, 
    Fill = System.Windows.Media.Brushes.Red 
}; 

あなたがより複雑な何かをしたい場合は、Ellipseや他の子要素で、代わりにそれをCanvasを与えている可能性があります。

+1

ああやあ..それは簡単です:D - ありがとう –

関連する問題