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

时间:2016-03-08 16:41:18

标签: c# wpf xaml blend

我需要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)右键单击&#34;对象和时间线&#34;

中的图像

2)编辑风格

3)创建样式资源

我可以创建故事板和整个九个但不能通过Blend的界面添加数据触发器。我转到资产菜单将ChangePropertyAction拖到样式上,但整个资产菜单显示为灰色/不起作用。

    <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 个答案:

答案 0 :(得分:0)

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

Ctrl + ALT + R

...或从顶部菜单View -> Triggers Window中选择并管理您的触发器。

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