Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coding style 在xaml中创建图像样式_Coding Style_Expression Blend - Fatal编程技术网

Coding style 在xaml中创建图像样式

Coding style 在xaml中创建图像样式,coding-style,expression-blend,Coding Style,Expression Blend,我不知道为什么我在做这件事上有这么多困难,这应该不难,但我一定是不称职的。有人能给我一个图像样式的xaml吗?在这个样式中,图像的不透明度为60%,鼠标悬停时淡入到100,鼠标悬停时返回到60%,onclick闪烁0.2秒 或者只是告诉我如何混合 多谢各位 解决方案非常简单: <Style x:Key="FadeImageButton" TargetType="Button"> <Setter Property="Template"> <Se

我不知道为什么我在做这件事上有这么多困难,这应该不难,但我一定是不称职的。有人能给我一个图像样式的xaml吗?在这个样式中,图像的不透明度为60%,鼠标悬停时淡入到100,鼠标悬停时返回到60%,onclick闪烁0.2秒

或者只是告诉我如何混合

多谢各位


解决方案非常简单:

<Style x:Key="FadeImageButton" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid x:Name="grid" Width="16" Height="16">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualStateGroup.Transitions>
                                <VisualTransition GeneratedDuration="0:0:0.2"/>
                                <VisualTransition GeneratedDuration="0:0:0.2" To="Normal"/>
                                <VisualTransition GeneratedDuration="0:0:0.2" To="MouseOver"/>
                            </VisualStateGroup.Transitions>
                            <VisualState x:Name="Normal">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="0.6" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="MouseOver">
                                <Storyboard>
                                    <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="grid" d:IsOptimized="True"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed"/>
                            <VisualState x:Name="Disabled"/>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="FocusStates">
                            <VisualState x:Name="Focused"/>
                            <VisualState x:Name="Unfocused"/>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

你当然不是无能的。图像没有状态,因此样式不是答案

您可以为图像创建的唯一样式是一个固定状态,因此您可以添加60%的不透明度,但不能添加太多其他内容

你的选择是:

  • 创建EnterImage和LeaveImage 与ControlStoryboard动作行为一起播放的故事板(在MouseEnter和MouseLeave事件上)
  • 创建自定义行为并将其附加到图像
  • 将图像放置在另一个具有状态的控件中(可能是按钮)
  • 将图像放置在具有图像属性的用户控件中
  • 创建自定义控件
最简单的是选项1,但它需要将多个属性附加到每个图像,以便进行更多的拖动和单击来编写它们


如果您告诉我们您喜欢哪个选项,我可能会发布一个示例。

这是我希望应用于许多图像的效果,单击事件并不重要,因此如果有一种简单的方法将图像链接到资源,创建“悬停时淡出,悬停时淡出”,那将是理想的。根据我在你的帖子中的理解,我认为按钮是最合乎逻辑的选择,我会自己尝试一下,先不要不必要地打扰你,然后再回复你,谢谢你启发我,我实际上认为状态可以应用于所有控件。结果很简单-谢谢