使用 Blend 的界面将数据触发器添加到样式触发器,而不是通过 xaml 代码

Posted

技术标签:

【中文标题】使用 Blend 的界面将数据触发器添加到样式触发器,而不是通过 xaml 代码【英文标题】:Adding data trigger to style trigger using Blend's interface, not through xaml code 【发布时间】:2016-03-08 16:41:17 【问题描述】:

我需要一些 WPF 混合向导的帮助。这更多是为了知识,因为我已经可以通过显式更改 xaml 以某种样式实现数据触发器,但我想知道是否有办法通过 Blend 来做到这一点。

让我们从一些代码开始吧!

<Image x:Name="image" HorizontalAlignment="Center" Height="299" Margin="24,27,24,0" VerticalAlignment="Top" Width="832" RenderTransformOrigin="0.5,0.5" Source="img/SpiderLogo.png" d:IsHidden="True" Grid.RowSpan="2">
        <Image.Style>
            <Style>
                <Style.Resources>
                    <Storyboard x:Key="LoadTitleScreen">
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)">
                            <EasingDoubleKeyFrame KeyTime="0" Value="1"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="0"/>
                        </DoubleAnimationUsingKeyFrames>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)">
                            <DiscreteObjectKeyFrame KeyTime="0" Value="x:Static Visibility.Visible"/>
                            <DiscreteObjectKeyFrame KeyTime="0:0:0.6" Value="x:Static Visibility.Collapsed"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </Style.Resources>
                <Style.Triggers>
                    <DataTrigger Binding="Binding IsLoginValid, Source=StaticResource viewModel" Value="true">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard Storyboard="StaticResource LoadTitleScreen"/>
                        </DataTrigger.EnterActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>

一切都很好,在这里工作!现在在构建另一个图像并通过以下方式编辑其样式资源之后:

1) 在“对象和时间轴”中右击图片

2) 编辑样式

3) 创建样式资源

我可以创建故事板和整个九个故事板,但无法通过 Blend 的界面向其中添加数据触发器。我转到 Assets Menu 将 ChangePropertyAction 拖到样式上,但整个 Assets Menu 是灰色的/不起作用。

    <Image x:Name="titleBackgroundImage" HorizontalAlignment="Center" Height="610" VerticalAlignment="Center" Width="899"  Source="img/RPVBackground.jpg" Stretch="Fill" Margin="-9,-10,-10,-50" Grid.RowSpan="2" Visibility="Collapsed" Style="DynamicResource TitleScreenBackgroundImage">
        <Image.Resources>
            <Style x:Key="TitleScreenBackgroundImage" TargetType="x:Type Image">
                <Style.Resources>
                    <Storyboard x:Key="LoadTitleScreenBackground">
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="x:Null">
                            <EasingDoubleKeyFrame KeyTime="0:0:0.6" Value="0"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:1.1" Value="1"/>
                        </DoubleAnimationUsingKeyFrames>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="x:Null">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0.6" Value="x:Static Visibility.Visible"/>
                            <DiscreteObjectKeyFrame KeyTime="0:0:1.1" Value="x:Static Visibility.Collapsed"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </Style.Resources>
            </Style>
        </Image.Resources>
    </Image>

这就是我所坚持的,在样式资源中创建了一个不错的故事板,但无法添加触发器来调用它 =(

如果你知道怎么做,请帮忙!非常感谢!

【问题讨论】:

【参考方案1】:

如果它只是你想要的触发器,并且默认情况下该窗口没有立即打开,你可以点击;

Ctrl + ALT + R

...或从顶部菜单中选择 View -&gt; Triggers Window 并在那里管理您的触发器。

至于为什么您的“资产”选项卡显示为灰色,这可能是几个不同的原因。需要知道更多来诊断那个。第一个猜测是你只是缺少 SDK 或其他东西吗?希望这会有所帮助。

【讨论】:

嗨,克里斯,感谢您的回复。我可以在编辑样式时打开触发器窗口,但是单击“+属性”添加属性触发器什么也不做。生病检查SDK,我目前使用的是2013,所以这可能是一个问题。

以上是关于使用 Blend 的界面将数据触发器添加到样式触发器,而不是通过 xaml 代码的主要内容,如果未能解决你的问题,请参考以下文章

Expression Blend 4 中的触发器面板在哪里?

Blend 触发器

为啥在使用 Caliburn Micro Conductor.OneActive 时,Blend Interaction 事件触发器会多次触发?

通过 WPF 样式或触发器设置 TaskbarItemInfo

用 Blend 自动生成 自定义按钮控件 及设置触发器

Visual Blend 2015 未显示编辑自适应触发器