Silverlight和UpdateSource问题中的OneWayToSource

时间:2011-05-06 10:13:22

标签: c# silverlight binding prism

我在使用Prism 2.2作为MVVM构建的应用程序中将CommandParameter绑定到自己的Command时遇到了一些问题。让我介绍一下它发生了什么。 我有一个带有名为NumPageElements的属性的自定义列表框,还有几个按钮可以滚动列表中需要该属性的按钮。我在wpf中需要(和工作)的简化xaml是:

<Button x:Name="PageDownButton" Command="{Binding PageDownCommand}" CommandParameter="{Binding ElementName=ItemsListBox, Path=NumPageElements}" />

<Custom:MyOwnListBox x:Name="ItemsListBox" x:NumPageElements="{Binding ElementsPerPage, Mode=OneWayToSource}" >
. . .
</Custom:MyOwnListBox>

要在Silverlight中使用相同的行为,我写了这个xaml:

<Button Name="PageDownButton" Command="{Binding PageDownCommand}" CommandParameter="{Binding ElementName=ItemsListBox, Path=NumPageElements}" />

<Custom:MyOwnListBox Name="ItemsListBox" NumPageElements="{Binding Path=ElementsPerPage, Mode=TwoWay, UpdateSourceTrigger=Explicit}" >
. . .
</Custom:MyOwnListBox>

PageDownButton是一个IApplicationCommand,ElementsPerPage是演示者公开的属性。 现在,我第一次打开此视图时,以这种方式制作的按钮看起来已启用,但它们不是“可点击”的。如果我切换到不同的视图,然后使用这些按钮返回视图,他们最终会捕获正确的行为。看起来它在第一次命令条件时没有正确初始化(事实上它们应该被禁用,直到我在列表框中插入一个项目),就像通过CommandParameter属性给出的参数没有正确初始化一样。但我无法理解为什么在视图之间切换使其有效。

我怀疑我应该在加载视图后强制绑定的UpdateSource(我为ItemsListBox.NumPageElements和PageDownButton.CommandParameter做了),但在后面的代码中执行它没有任何帮助。

我做错了什么? 谢谢你的回复, 垫。

0 个答案:

没有答案