3

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

WPF 动画警告:6:无法执行操作,因为指定的情节提要从未应用于此对象以进行交互式控制。Action='Stop'; Storyboard='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 元素?如何找到该动画的附加位置?

提前致谢

4

3 回答 3

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 位于此处的窗口范围(本地)上。因此,如果 StoryBoard 都位于应用程序 (App.xaml) 的 ResourceDictionary 中,则将“资源”更改为:

Application.Current.Resources

可能有另一种方法可以获取 WPF 应用程序的所有资源,而不仅仅是本地或应用程序范围的资源,但尚未对此进行研究。希望这段代码能让你找到你的问题。

于 2012-10-19T23:34:17.243 回答
2

其实我也遇到了和你一样的问题。

我发现动画的Begin()方法在调用它的方法之前没有Stop()被调用。因此,运行时会发出无法调用停止操作的警告。

于 2014-02-12T16:09:53.343 回答
1

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

<interactivity:EventTrigger EventName="SelectionChanged ">

变成

<interactivity:EventTrigger EventName="SelectionChanged">
于 2016-03-11T17:49:27.460 回答