'Using DrawingImage as Button Content in WPF
I want to use a DrawingImage, created from an svg, as content for a WPF Button control. If I set the DrawingImage to Button.Content it only shows the name of the type (probably just using .ToString()):
using (FileStream stream = new FileStream("test10.svg", FileMode.Open, FileAccess.Read))
{
DrawingImage di = SvgReader.Load(stream);
Button_Test.Content = di;
}
What I want to do is:
Storing the DrawingImage, which is created from an svg in a ResourceDirectory and bind it to the Button.Content
Manipulating the DrawingImage for Hover, Buttonpressed, Disabled to visualize these states
==> ?? ==> ??
So my questions are:
A) How can I display the DrawingImage on my Button
B) How can I manipulate the DrawingImage when States change?
Thanks in advance.
Solution 1:[1]
You shoud set the Content
to an System.Windows.Controls.Image
to be able to display it on the Button
:
Button_Test.Content = new Image { Source = di };
Solution 2:[2]
Here is how you can do it
<Style TargetType="Button" x:Key="myDrawingImageButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Image Source="/test10.svg"
Width="54" Height="24" x:Name="Image">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="Disabled"/>
<VisualState x:Name="MouseOver">
<Storyboard Storyboard.TargetName="Image"
Storyboard.TargetProperty="Source">
<ObjectAnimationUsingKeyFrames>
<DiscreteObjectKeyFrame KeyTime="0" Value="/test11.svg"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed">
<Storyboard Storyboard.TargetName="Image"
Storyboard.TargetProperty="Source">
<ObjectAnimationUsingKeyFrames>
<DiscreteObjectKeyFrame KeyTime="0" Value="/test12.svg"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Image>
</ControlTemplate>
</Setter.Value>
</Setter>
PS: Not tested, hope it gives right direction.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | mm8 |
Solution 2 | Cinchoo |