【发布时间】: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>
这就是我所坚持的,在样式资源中创建了一个不错的故事板,但无法添加触发器来调用它 =(
如果你知道怎么做,请帮忙!非常感谢!
【问题讨论】: