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 が Window スコープ (ローカル) にあることに注意してください。したがって、StoryBoards がすべてアプリケーション (App.xaml) の ResourceDictionary に配置されている場合は、'Resources' を次のように変更します。

Application.Current.Resources

ローカルまたはアプリケーションスコープだけでなく、WPF アプリケーションのすべてのリソースを取得する別の方法があるかもしれませんが、これについては調べていません。うまくいけば、このコードで問題を見つけることができます。

于 2012-10-19T23:34:17.243 に答える