Ich muss meine WPF-Anwendung, die eine hat, konvertieren, um Vektorgrafiken für die Bilder auf Schaltflächen usw. anstelle von Bitmaps zu verwenden. Ich habe das funktioniert so weit, außer für die RibbonApplicationMenu
Artikel, die ihre RibbonApplicationMenu.ImageSource
Eigenschaft verwenden, mit dem Typ ImageSource
, um die Grafik, die auf der linken Seite des Menüband-Menüpunkts angezeigt wird.Wie kann ich Vektorgrafik (in XAML definiert) als Bild eines Ribbon-Menüelements verwenden?
Meine Vektorgrafik werden, wie dies in XAML
definiert:
<ControlTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ViewBox Width="148.854" Height="150.500">
<Canvas Width="148.854" Height="150.500">
<Path>
<!-- . . . yadda yadda yadda . . . -->
</Path>
</Canvas>
<Viewbox>
</ControlTemplate>
Diese richtig machen, wenn ich sie setze die .Template
ein Button
usw.
ich jedoch herausfinden kann nicht sein, , wie man sie für die Bilder verwendet, die in den RibbonApplicationMenu
Kontrollen angezeigt werden. Nur das Setzen der .Template
Eigenschaft der RibbonApplicationMenu
funktioniert nicht (es füllt die gesamte Kontrolle scheint seine Funktionalität zu brechen).
ich versuchte, ein VisualBrush
zu verwenden und es dann zu einem RenderTargetBitmap
machen als das verwenden .ImageSource
(Ich muß auch in ich nicht hinter Gründen meist in Code arbeiten):
ContentControl cc = new ContentControl(); // just picked ContentControl as a test
cc.Template = myTemplate; // assume myTemplate has the proper ControlTemplate
VisualBrush visBrush = new VisualBrush();
visBrush.Visual = cc;
// not really sure about the parameters to this next line
RenderTargetBitmap rend =
new RenderTargetBitmap(148.854, 150.5, 120, 96, PixelFormats.Pbgra32);
rend.Render(cc);
RibbonApplicationMenuItem menu = new RibbonApplicationMenuItem();
menu.ImageSource = render;
Diese kompiliert, zeigt aber nur ein Leerzeichen, wohin das Bild gehen würde. Wenn ich stattdessen BitmapImage
verwende, das von einer Bilddatei als .ImageSource
geladen wird, wird es richtig angezeigt.
Irgendwelche Ideen, wie ich das zur Arbeit bringen kann?
Entschuldigung, ich hätte mehr Details in meinen Code oben enthalten sollen. Ich habe eine Größe für die Leinwand (und ich habe diese Attribute in meiner Frage bearbeitet). Ich werde versuchen, so schnell wie möglich zu messen und zu ordnen. – Pysul
Mit '.Measure' und' .Arrange' wurde das Ding im Ribbon angezeigt. Ich bin mir nicht sicher, ob es genau das ist, was ich brauche, aber es hat funktioniert. Es ist zwar nicht richtig aufgereiht, aber ich kann wahrscheinlich damit herumspielen. – Pysul