WPF动画警告:6:无法执行操作

时间:2012-10-19 20:11:43

标签: c# wpf xaml

我在VIsual Studio输出面板中的WPF应用程序警告中观察到以下文字:

  

WPF动画警告:6:无法执行操作,因为   指定的Storyboard从未应用于此对象以进行交互   control.Action = '停止';   故事板= 'System.Windows.Media.Animation.Storyboard';    Storyboard.HashCode = '65981734'的; Storyboard.Type = 'System.Windows.Media.Animation.Storyboard';   TargetElement = 'System.Windows.Controls.ContentPresenter';   TargetElement.HashCode = '49882372';   TargetElement.Type = 'System.Windows.Controls.ContentPresenter'

如何将HashCode反转为某个xaml元素?如何找到附加动画的位置?

提前致谢

3 个答案:

答案 0 :(得分:5)

您可以使用以下代码查找StoryBoard:

private string GetStoryBoardNameByHashCode(int hashCode)
{
    foreach (DictionaryEntry resource in Resources)
    {
        if (resource.Value is Storyboard)
        {
            if (resource.GetHashCode() == hashCode)
                return ((Storyboard) resource.Value).Name;
        }
    }
    return String.Empty;
}

执行如下方法:

    string storyBoardName = GetStoryBoardNameByHashCode(65981734);

这应该能够使用HashCode获取StoryBoard-Name(如果你想获得指定的StoryBoard,你也可以返回它)。请注意,ResourceDictionary位于Window-scope(本地)上。因此,如果StoryBoards都位于Application(App.xaml)的ResourceDictionary中,那么将'Resources'更改为:

Application.Current.Resources

可能有另一种方法来获取WPF应用程序的所有资源,而不仅仅是本地或应用程序范围,但没有研究过。希望这段代码能让您找到问题所在。


以下是sample代码,以防您需要它!

答案 1 :(得分:2)

实际上,我遇到了和你一样的问题。

我发现动画的Begin()方法在调用Stop()方法之前没有被调用。因此Runtime抛出一个警告,指出无法调用Stop动作。

答案 2 :(得分:0)

我的问题是我的EventName中有一个尾随空格。

<interactivity:EventTrigger EventName="SelectionChanged ">

更改为

<interactivity:EventTrigger EventName="SelectionChanged">