UWP双向x:绑定到页面元素不起作用

时间:2016-01-26 09:58:16

标签: c# xaml data-binding uwp windows-10-universal

我正在尝试新的x:Bind,我遇到了一个奇怪的问题。我想将滑块控件绑定到媒体元素,让用户看到/调整它们的位置。如果我使用经典的绑定语法,它可以正常工作。

{
    "_id" : "nAwt3b76c24mZfqxz",
    "title" : "test",
    "test" : [
        {
            "4" : false,
            "15" : false,
            "30" : false,
            "75" : true,
            "id" : "ePce6fBAHx9KeKjuM"
        }
    ]
}

滑块在播放媒体时移动,拖动滑块会更改媒体流中的位置。一切都很好。

但是,如果我将代码更改为使用x:Bind ...

false

当媒体播放时,滑块不再移动。我仍然可以用它来重新定位媒体播放,但看起来滑块的最大值也没有正确设置。如果我尝试将其拖到最后,我会收到堆栈溢出异常。

而且,为了完整起见,这里是按钮点击事件的代码:

var result = Collection.findOne({_id: 'nAwt3b76c24mZfqxz'}).test;

......和转换器......

30

有没有人知道为什么第一个有效而不是另一个?我对代码所做的唯一改变是我绑定滑块的值和最大值的方式。

1 个答案:

答案 0 :(得分:1)

MediaElement的position属性并不打算像这样绑定。 DependencyProperties没有关于它们何时触发事件和能够检索值的单独概念。每当你阅读它时,这个值都需要是正确的,有点像动画属性。您不希望进入位置属性的事件更改循环,因为这可能/将会与CPU挂钩,因为值会不断变化,可能比UI滴答更快。 媒体传输控件使用具有1s更新频率的Dispatch Timer,用于更新滑块和/或文本字段。您可以使用更快的频率,但对于大多数情况,1s可能足够频繁。