background color change in stackpanel
14,822
Solution 1
You can do that by applying Storyboard
on Click event trigger:
<ControlTemplate TargetType="HyperlinkButton">
<StackPanel Orientation="Horizontal" Background="#EBEBEB" x:Name="sp1">
<Image Source="/Assets/Menu/wheretostay.png" Stretch="None"/>
<TextBlock />
</StackPanel>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="Green" Storyboard.TargetName="sp1"
Storyboard.TargetProperty="Background.Color"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
For Windows Phone 7, use Visual State
:
<ControlTemplate TargetType="HyperlinkButton">
<ControlTemplate.Resources>
<SolidColorBrush x:Key="PhoneBackgrounBrush" Color="Green"/>
</ControlTemplate.Resources>
<StackPanel Orientation="Horizontal" x:Name="sp1">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver"/>
<VisualState x:Name="Pressed">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetProperty="Background"
Storyboard.TargetName="sp1">
<DiscreteObjectKeyFrame KeyTime="0"
Value="{StaticResource PhoneBackgrounBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Image Source="/Assets/Menu/wheretostay.png" Stretch="None"/>
<TextBlock />
</StackPanel>
</ControlTemplate>
Solution 2
Try this
use this name space using System.Windows.Media;
and in button click event write this
private void WhereToStayButton_Click(object sender, RoutedEventArgs e)
{
stackpanelname.Background = new SolidColorBrush(Colors.Red);
}
Author by
Arun.P
Updated on June 04, 2022Comments
-
Arun.P almost 2 years
I have stack panel in hyperlink button on button click i have to change stack panel background
<HyperlinkButton Name="WhereToStayButton" Margin="0,0,0,0" Grid.Row="5" Click="WhereToStayButton_Click"> <HyperlinkButton.Template> <ControlTemplate TargetType="HyperlinkButton"> <StackPanel Orientation="Horizontal" Background="#EBEBEB" x:Name="sp1"> <Image Source="/Assets/Menu/wheretostay.png" Stretch="None"/> <TextBlock Text="{Binding Path=LocalizedResources.menu_where_stay, Source={StaticResource LocalizedStrings}}" VerticalAlignment="Center" Margin="5,10" FontSize="26" Foreground="Black" FontFamily="{StaticResource CustomLucidaGrandStyle}"/> </StackPanel> </ControlTemplate> </HyperlinkButton.Template> </HyperlinkButton>
-
Arun.P about 10 yearsThis is windows phone 8 the error is: In <ControlTemplate.Triggers> "the attachable property Triggers is not recognized or not accessible" plz help me
-
Rohit Vats about 10 yearsYou can use
VisualStates
in Windows Phone 7 like described here. Create Pressed Visual state. -
Arun.P about 10 yearsUnable to get stackpanel name in back end as it iss present in template
-
Rashad Valliyengal about 10 yearscheck this answer how to access control within template stackoverflow.com/questions/19379946/…
-
Rohit Vats about 10 yearsI have updated the answer for Windows Phone 7. Have a look at it.
-
Arun.P about 10 yearsGood it works i have to change to original background color when button click is completed.
-
Rohit Vats about 10 yearsIn case you want to revert back to original value. Simply add two more Visual States for
Normal
andMouseOver
. I have updated in answer. -
Naveen Kumar V about 6 yearsWorked for me :)