数据绑定数据透视控件在数据透视来自类似对象时跳过数据透视[WP7]

本文关键字:数据 透视 WP7 对象 控件 数据绑定 | 更新日期: 2023-09-27 18:23:42

我有一个带有绑定的数据透视控件。一切都很好,直到我添加了一个枢轴——两个标题相同的枢轴,我们称它们为C和C',a和B——两个不同的枢轴,顺序如下:AC'BC。现在,当我尝试从B到C时,一切都还可以。但当我从A到C时时,它会做一些奇怪的事情:不移动,移动标题但不移动内容。。。奇怪的

我在PivotControl中调试了SelectionChanged事件,它甚至是最奇怪的。它被调用了两次:第一次,从C到另一个枢轴的转换,然后是另一个包含从a到C的正确转换的调用。

我什么都试过了。数据绑定是一个结构列表,如下所示:

struct Resource
{
   public someenum Type;
   public string Data;
   public string Identifier { get {...} set {...} }
   public UserToken User;
}

数据透视表的标题由IValueConverter设置,它以字符串Identifier(它是Type、Data和User的函数)作为参数。我更改了它,使标题总是不同,但它仍然不起作用。例如,当"类型"answers"数据"相同时,会出现错误,尽管"标识符"answers"用户"不同。

我写了两个运算符==和!=用于Resource,也用于UserToken。他们表现得像他们应该做的那样,但仍然会做出这种奇怪的转变。

数据绑定数据透视控件在数据透视来自类似对象时跳过数据透视[WP7]

说明显而易见的一点:给它们取不同的名字。

如果它们不同,你应该给它们起不同的名字。只需使用计数器对名称进行后期修复即可。

编辑

来自MSDN:

Name是为数不多的不能animated(IsAnimationProhibited在元数据中为true),因为名称其本身对于动画的定位是至关重要的。名称的数据绑定从技术上讲是可能的,但这是一种极不常见的情况,因为数据绑定的Name无法达到属性:为代码隐藏提供标识符连接点。

刚刚找到答案。在谷歌上搜索了很多之后,我注意到GetHashCode可能与这场混乱有关。我修改了结构中getHashCode的定义,瞧!它工作顺利:)

只是一个提示:要获得一个好的GetHashCode函数,请返回该函数的易失性参数的XOR。在我的案例中,代码是这样的:

Type.GetHashCode() ^ Data.GetHashCode() ^ User.GetHashCode();