Silverlight命令绑定

时间:2010-09-17 04:32:40

标签: silverlight binding command dependency-properties

我正在查看以下xaml:

   <Grid x:Name="LayoutRoot" Background="White">
        <Button Content="Say Hello..." VerticalAlignment="Center" 
                HorizontalAlignment="Center" 
                my:ButtonService.Command="{Binding Path=SayHello}"
                my:ButtonService.CommandParameter="Bob"/>
    </Grid>

我想了解命令如何绑定,后面没有代码。 [my:] 指向定义[ ButtonService ]静态类的dll,后者又将[ CommandProperty ]定义为 DependencyProperty

我希望这是后面代码的一部分,而实际上它是在自己的类中 - ButtonService。

有人可以向我解释它是如何(以及为什么)有效吗?

完整代码为here

1 个答案:

答案 0 :(得分:2)

ButtonService类将具有一种称为“AttachedProperty”的特殊形式的Dependency属性。为此属性分配值时,将执行此依赖项属性的元数据定义的回调。

它在ButtonService类中的这个回调代码将执行所有连接到Button click事件和所提供的CanExecuteChanged值的ICommand事件。

这个“命令”模式的重点是避免将代码放在代码隐藏中。执行某些处理并确定何时可以进行这种处理的代码被推回到被绑定的数据对象(通常称为“ViewModel”)。目的是创建一个更可测试的代码,因为它更容易测试没有UI的代码。

请注意,如果您使用的是Silverlight 4,则CommandCommandParameter现在由Button实施,因此SL 4中不需要此服务。