[英]Show image when mouse over on textblock, wpf
Hi I had a Grid
like this: 嗨,我有一个像这样的Grid
:
<Grid Margin="0,1,0,0" Height="35" VerticalAlignment="Top" HorizontalAlignment="Left" Width="158">
<Grid x:Name="MainGrid" Height="35" Background="#00FFFFFF" Margin="0,1.5,0,-1.5" d:LayoutOverrides="VerticalMargin">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="35" />
<ColumnDefinition Width="1" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Rectangle Fill="#FFFFFFFF" StrokeThickness="0" />
<Image Height="35" Width="35" VerticalAlignment="Stretch" Style="{StaticResource GithHubImage}" HorizontalAlignment="Stretch" Margin="0" Source="/Images/computer.png" />
<Rectangle Fill="#FFFFFFFF" Grid.Column="1" StrokeThickness="0" />
<Grid x:Name="Wrapper" Visibility="Visible" Grid.Column="3">
<Rectangle x:Name="Fill" Visibility="Collapsed" Width="12" Fill="#FFDDDDDD" HorizontalAlignment="Left" Margin="40,0,0,0" d:LayoutOverrides="Width" />
<Grid x:Name="Arrow" Visibility="Collapsed" Margin="0,0,27,0">
<Image Width="10" Height="20" HorizontalAlignment="Right" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<TransformGroup>
<RotateTransform Angle="180" />
</TransformGroup>
</Image.RenderTransform>
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing Brush="{DynamicResource GitHubAccentBrush}" Geometry="M897.41,613.924L887.08,624.255 887.08,603.594 897.41,613.924z" />
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Grid>
</Grid>
<TextBlock x:Name="Login" Grid.Column="3" Margin="7,0,0,0" VerticalAlignment="Center" Text="swethapilli" Height="25.976" />
</Grid>
<Rectangle Height="1" VerticalAlignment="Bottom" Fill="#FFFFFFFF" StrokeThickness="0" />
</Grid>
Now it appears like 现在看起来像
When the MouseOver
on the Image
or TextBlock
it should appear like this: 当MouseOver
在Image
或TextBlock
它应该出现这样的:
I have so many individual grids like this in my project which contains Image
and TextBlock
for all the grids i need to implement the same style. 我的项目中有这么多单独的网格,其中包含Image
和TextBlock
,这些网格用于实现相同样式所需的所有网格。
But i cant able to find how to make visible the arrow image (name arrow) and rectangle(name fill) to visible when the mouse over on the image(cat image) or TextBlock
. 但是我无法找到当鼠标悬停在图像(猫图像)或TextBlock
上时,如何使箭头图像(名称箭头)和矩形(名称填充)可见的方法。 I want to do it styles. 我想做风格。 I had already had storyboard like this. 我已经有了这样的故事板。
<Storyboard x:Key="ShowFillStoryBoard">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Fill">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Arrow">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="HideFillStoryBoard">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Fill">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="Arrow">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Collapsed}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
But i dont know where to implement this storyboard. 但是我不知道在哪里实现这个故事板。 Can any one please help me to find the solution. 谁能帮我找到解决方案。
我个人以前没有在样式中实现情节提要,但是从其他文章中我可以肯定,您需要使用样式的<Triggers>
并将Trigger
for IsMouseOver
设置为IsMouseOver
。
You can achieve this by using DataTriggers, but you have to remove Storyboard.TargetName=something
in your ShowFillStoryBoard
. 您可以使用DataTriggers来实现此目的,但是必须删除ShowFillStoryBoard
中的Storyboard.TargetName=something
。
Using DataTriggers to start a Storyboard: 使用DataTriggers启动情节提要:
<Style x:Key="MouseOverImageStyle" TargetType="Image">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsMouseOver, ElementName=textBlockName}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="StartStoryboardBegin" Storyboard="{StaticResource ResourceKey=ShowFillStoryBoard}"></BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="StartStoryboardBegin"></RemoveStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
Apply this style on which image should be animated: Style="{DynamicResource ResourceKey=MouseOverImageStyle}"
在应为其设置动画的图像上应用以下样式: Style="{DynamicResource ResourceKey=MouseOverImageStyle}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.