C# 触发器在应该触发时未被触发

C# 触发器在应该触发时未被触发,c#,wpf,C#,Wpf,我已经为我正在使用的一些软件开发了一个动画,它可以动态地将两个对象倾斜到各自的边界,然后在绊倒后再次返回。我遇到的问题是,应该被绊倒的脚本没有被执行,我无法解释原因 请注意:\u fg和\u bg值定义在类的顶部。 public static void Grass(Canvas canvas, int boundry) { Random random = new Random(); foreach (FrameworkElement element in canvas.Child

我已经为我正在使用的一些软件开发了一个动画,它可以动态地将两个对象倾斜到各自的边界,然后在绊倒后再次返回。我遇到的问题是,应该被绊倒的脚本没有被执行,我无法解释原因

请注意:\u fg和\u bg值定义在类的顶部。

public static void Grass(Canvas canvas, int boundry)
{
    Random random = new Random();
    foreach (FrameworkElement element in canvas.Children)
    {
        var elementName = Regex.Split(element.Name, "_");
        if (elementName[0] == "grass")
        {
            switch (elementName[1])
            {
                case "foreground":
                    _fgGrassDrn = (_fgGrassPos == 0 && _fgGrassHbd == 0) ? random.Next(0, 2) : _fgGrassDrn;
                    _fgGrassPos = (_fgGrassDrn == 0) ? _fgGrassPos + 1 : _fgGrassPos - 1;
                    _fgGrassBnd = (_fgGrassDrn == 0) ? boundry : -boundry;
                    if (_fgGrassBnd == boundry) // this is the tripwire code.
                    {
                        _fgGrassHbd = 1;
                        _fgGrassDrn = (_fgGrassDrn == 0) ? 1 : 0;
                    }
                    element.RenderTransform = new SkewTransform(_fgGrassPos, 0);
                    break;
                case "background":
                    _bgGrassDrn = (_bgGrassPos == 0 && _bgGrassHbd == 0) ? random.Next(0, 2) : _bgGrassDrn;
                    _bgGrassPos = (_bgGrassDrn == 0) ? _bgGrassPos + 1 : _bgGrassPos - 1;
                    _bgGrassBnd = (_bgGrassDrn == 0) ? boundry : -boundry;
                    if (_bgGrassBnd == boundry) // this is the tripwire code.
                    {
                        _bgGrassHbd = 1;
                        _bgGrassDrn = (_bgGrassDrn == 0) ? 1 : 0;
                    }
                    element.RenderTransform = new SkewTransform(_bgGrassPos, 0);
                    break;
            }
        }
    }
}

我有一种感觉,我错过了一些非常明显的东西,但我用c语言编程才5天左右,所以请原谅:)

修复了这个问题,这确实是我的一个愚蠢的错误。我比较了方法参数边界,该参数不考虑草的方向,使其始终为正

if (_fgGrassBnd == _fgGrassPos) {}
if (_bgGrassBnd == _bgGrassPos) {}

\u fgGrassBnd\u bgGrassBnd是计算出的边界(左为正,右为负),使此动画按预期工作。

修复了问题,这确实是我的一个愚蠢错误。我比较了方法参数边界,该参数不考虑草的方向,使其始终为正

if (_fgGrassBnd == _fgGrassPos) {}
if (_bgGrassBnd == _bgGrassPos) {}
\u fglassbnd\u bglassbnd是计算的边界(左为正,右为负),使此动画按预期工作