【问题标题】:StoryBoard - Set Target Name from code-behindStoryBoard - 从代码隐藏中设置目标名称
【发布时间】:2012-03-08 17:16:45
【问题描述】:

我在资源中有 StoryBoard

  <Window.Resources>
    <Storyboard x:Key="Fading" Storyboard.TargetName="NotifyWindow" Storyboard.TargetProperty="Opacity" >
        <DoubleAnimation From="1" To="0" Duration="0:0:1">
        </DoubleAnimation>
    </Storyboard>
  </Window.Resources>

在 WindowClosing 上我有下一个代码

private void NotifyWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    Storyboard fading = this.Resources["Fading"] as Storyboard;
    if (fading != null && !fadingCompleted)
    {
        fading.Completed += FadingStoryBoard_Completed;
        fading.Begin();
        e.Cancel = true;
    }
}

private void FadingStoryBoard_Completed(object sender, EventArgs e)
{
   fadingCompleted = true;
   Close();
   fadingCompleted = false;
}

这很好用,但我想将此情节提要移至另一个程序集。所以我需要指定StoryBoard.TargetName 表单代码。我该怎么做?

【问题讨论】:

    标签: c# wpf storyboard


    【解决方案1】:

    附加属性可以通过名为"Set" + PropertyName的静态帮助方法从代码中设置

    参见 C# 示例 here:

    Storyboard.SetTargetName(yourAnimation, "NotifyWindow"); 
    

    【讨论】:

      【解决方案2】:

      将依赖属性设置为依赖对象的标准方法与附加属性相同:

      dependencyObjectInstance.SetValue(SampleClass.PropertyName + "Property", value);
      

      在你的例子中:

      fading.SetValue(Storyboard.TargetNameProperty, "NotifyWindow");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-18
        • 2013-03-04
        • 2011-08-05
        • 1970-01-01
        • 2018-08-23
        • 1970-01-01
        相关资源
        最近更新 更多