Databound PivotControl在来自类似物体的情况下跳过枢轴[WP7]

时间:2012-02-07 10:00:12

标签: c# windows-phone-7 binding pivot

我有一个带绑定的PivotControl。一切运作良好,直到我添加一个具有相同标题的枢轴两个枢轴,让我们称它们为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的函数)作为参数。我改变它以使标题总是不同,但它仍然不起作用。例如,当Type和Data相同时会出现错误,尽管Identifier和User不同。

我为资源编写了运算符==和!=,也为UserToken编写了运算符。他们的行为应该如此,但仍然会做出这种奇怪的过渡。

2 个答案:

答案 0 :(得分:1)

说明显而易见:给他们不同的名字。

如果它们不同,你应该给它们不同的名字。只需用计数器修改名称即可。

修改

来自MSDN

  

Name是极少数依赖属性之一   动画(IsAnimationProhibited在元数据中为true),因为名称   本身对于定位动画至关重要。绑定名称的数据是   技术上可行,但是一个非常罕见的情况,因为a   数据绑定名称无法满足主要用途   property:为代码隐藏提供标识符连接点。

答案 1 :(得分:0)

刚刚找到答案。经过大量的谷歌搜索,我注意到GetHashCode可能在这个混乱中有所作为。我在结构中修改了getHashCode的定义,瞧!它运作顺利:)

只是一个提示:获得一个好的GetHashCode函数返回函数的volatile参数的XOR。在我的例子中,代码是这样的:

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