这种情况经常出:

在看,你有一个制定一个模型酒店(支持通过一个举).例如:

<TextBlock Text="{Binding Path=Subtotal}"/>

当财产的变化,需要使用者注意这一事实与一些有创意的动画。我如何可以利用的事实,即视为已经连接到通知,并避免造成许多额外的代码(或至少建立一次,重新使用)。数据,触发可能是最佳选择,但是我不知道如何让他们火在任何价值的改变对于一些具体的价值。

以下选择:

  • 提出的额外事件的视图模型,订阅的图码-在后面。
  • 创建一个datatrigger开酒店所提到的,使用转换器,将返回真的,如果价值是变化的。
  • 创建一个datatrigger开一个新布尔酒店的模型,它被用于"信号"的改变。
  • 创建一个附加行为的控制,这将订购的控制是依赖性的改变,并开始。

这一做你喜欢/使用?我有没有错过任何的选择吗?

P.S.这将是很好(但并不严重)如果该解决办法将提供一种可能性开始画第一和反映的价值变化,当它结束。

有帮助吗?

解决方案

好吧,这是什么我来到之后,一些尝试。

我已经创建了一个表达的混3触发一个依赖性的财产(我把它命名订阅).我约束订阅的同样的价值,我的文本块定和触发这附ControlStoryboardAction从表达的混3.

这就是触发:

public class DataTriggerPlus : TriggerBase<DependencyObject>
{
    public static readonly DependencyProperty SubscriptionProperty =
        DependencyProperty.Register("Subscription", 
            typeof(string),
            typeof(DataTriggerPlus),
            new FrameworkPropertyMetadata("",
              new PropertyChangedCallback(OnSubscriptionChanged)));

    public string Subscription
    {
        get { return (string)GetValue(SubscriptionProperty); }
        set { SetValue(SubscriptionProperty, value); }
    }

    private static void OnSubscriptionChanged(DependencyObject d,
      DependencyPropertyChangedEventArgs e)
    {
        ((DataTriggerPlus)d).InvokeActions(null);
    }
}

这里是它,是附着于故事情节:

<TextBlock x:Name="textBlock" Text="{Binding TestProp}" Background="White">
    <i:Interaction.Triggers>
        <local:DataTriggerPlus Subscription="{Binding TestProp}">
            <im:ControlStoryboardAction 
                Storyboard="{StaticResource Storyboard1}"/>
        </local:DataTriggerPlus>
    </i:Interaction.Triggers>
</TextBlock>

我喜欢这种方法很多,伟大的工作,尽3设计师!

编辑:回答提请评论...

是的,它的船只与融合。你可以只包括Microsoft.Expression.Interactions.dll 和系统。窗户。交互性项目。

是的,它详细(我已要求,如果有人想出了一个很好的方式来适用的行为通过的风格 在这个问题)-但是还有一个有益的灵活性。例如,你不仅可以启动一个故事情节,但也开关一国或做其他一些行动从相同的触发器。

其他提示

你可以创建一个触发,将开始动画。

事情是这样的:

<Style>
    <Style.Triggers>
       <Trigger 
            Property="ViewModelProperty"
            Value="True">
            <Trigger.EnterActions>
                 <BeginStoryboard Storyboard="YourStoryBoard" />
            </Trigger.EnterActions>
       </Trigger>
    </Style.Triggers>
</Style>

作为对这一问题对于该问题的设定值一旦画完成,这是一点点的痛苦。作为我知道你会需要使用完成的事故,这需要代码后面,这是你想要的东西,以避免与。.

我已经试过使用EventTriggers绑定到完成的事件,但是,还引入了一些并发症。看看 在这里, 更多的细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top