C# 数据绑定的PivotControl在来自类似对象时跳过Pivot[WP7]

C# 数据绑定的PivotControl在来自类似对象时跳过Pivot[WP7],c#,windows-phone-7,binding,pivot,C#,Windows Phone 7,Binding,Pivot,我有一个带绑定的PivotControl。一切都很顺利,直到我添加了一个支点两个标题相同的支点,让我们称它们为C和C',a和B两个不同的支点,顺序如下:AC'BC。现在,当我试着从B转到C时,一切都很好。但当我从A转到C时,它会做一些奇怪的事情:不移动,移动标题,但不移动内容。。。奇怪 我调试了PivotControl中的SelectionChanged事件,这甚至是最奇怪的。它被调用两次:第一次是从C到另一个pivot的转换,然后是另一个包含正确转换的调用,从a到C 我什么都试过了。数据绑定是

我有一个带绑定的PivotControl。一切都很顺利,直到我添加了一个支点两个标题相同的支点,让我们称它们为C和C',a和B两个不同的支点,顺序如下:AC'BC。现在,当我试着从B转到C时,一切都很好。但当我从A转到C时,它会做一些奇怪的事情:不移动,移动标题,但不移动内容。。。奇怪

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

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

struct Resource
{
   public someenum Type;
   public string Data;
   public string Identifier { get {...} set {...} }
   public UserToken User;
}
pivot的标题由IValueConverter设置,它将字符串标识符(类型、数据和用户的函数)作为参数。我改变了它,使标题总是不同的,但它仍然不起作用。例如,当类型和数据相同时,会出现错误,尽管标识符和用户不同


我已经编写了运算符==和!=用于资源,也用于UserToken。他们表现得很好,但仍然有这种奇怪的转变

说明显而易见的事情:给他们起不同的名字

如果他们不同,你应该给他们起不同的名字。只要用一个计数器来修改名字就行了

编辑

从:

名称是极少数不能更改的依赖项属性之一 已设置动画(IsAnimationProbited在元数据中为true),因为名称 它本身对于确定动画的目标至关重要。数据绑定名称是 从技术上讲是可能的,但这是一种极为罕见的情况,因为 数据绑定名称不能用于 属性:为代码隐藏提供标识符连接点


刚刚找到答案。在谷歌搜索了很多次之后,我注意到也许GetHashCode在这个混乱中起了作用。我修改了结构中getHashCode的定义,瞧!工作顺利:)

提示:要获得一个好的GetHashCode函数,请返回函数的易失性参数的XOR。就我而言,代码是这样的:

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

我已经试过了,但它仍然可以做很多事情。我用更多的代码更新了这个问题。一般来说,使用数据绑定分配名称是个坏主意。我补充了我的答案。对不起,我说的不是porperty这个名字,而是pivot的标题。我以前应该澄清一下。哇,那是完全不同的事情!不过,我的第一个答案仍然是,我认为这是一个坏的用户体验重复相同的名称。我用数据绑定的标题,它从来没有给我任何问题。但我的头衔总是不同的。是的,我以前没有任何问题。但这太奇怪了。。。即使转换器总是给出不同的名称(参数总是不同)。