我在哪里可以在WAF BookLibrary示例中找到元素的属性代码

时间:2014-09-15 23:40:29

标签: wpf waf-framework-c#

我正在学习WAF和WPF(我很新手)。

我已经分析了很多时间来弄清楚如何在BookLibrary示例中设置元素属性,但我无法弄清楚。 enter image description here

当我查看BookListView.xaml中ToobarTray的删除按钮代码

<Button Command="{Binding RemoveCommand}">
    <AccessText Text="{x:Static p:Resources.RemoveMenu}"/>
</Button>

没有属性可以禁用此按钮。 残疾人财产代码在哪里? 当用户在datagrid中选择一行时,我找不到启用此按钮的代码。 启用/禁用如何工作?

与ShellWindow中的工具栏托盘按钮相同。

<Button Command="ApplicationCommands.Undo" Content="{StaticResource UndoImage}" ToolTip="{x:Static p:Resources.Undo}"/>
<Button Command="ApplicationCommands.Redo" Content="{StaticResource RedoImage}" ToolTip="{x:Static p:Resources.Redo}"/>
<Button Command="ApplicationCommands.Cut" Content="{StaticResource CutImage}" ToolTip="{x:Static p:Resources.Cut}"/>
<Button Command="ApplicationCommands.Copy" Content="{StaticResource CopyImage}" ToolTip="{x:Static p:Resources.Copy}"/>
<Button Command="ApplicationCommands.Paste" Content="{StaticResource PasteImage}" ToolTip="{x:Static p:Resources.Paste}"/>

上面的按钮肯定有不透明属性, 但是代码级别没有不透明度。 此外,当用户更改数据网格中的数据时,这些按钮的不透明度将更改为100%。 但是我找不到关于这个的代码。 这件事怎么样?

你能解释一下这些是怎么回事吗?

1 个答案:

答案 0 :(得分:1)

我的猜测是Command="{Binding RemoveCommand}"绑定到ViewModel中的DelegateCommand成员(DelegateCommand是WAF提供的ICommand的实现)。 DelegateCommand有一个可以带两个参数的构造函数。第一个参数指定单击按钮时要执行的操作。第二个指定启用按钮的时间。例如,它可能看起来像这样:

...
RemoveCommand= new DelegateCommand(Remove, CanRemove);
...

private void Remove()
{
    //Remove logic
}

private bool CanRemove()
{
    //When you are able to remove. For example, return SelectedItem != null;
}

如果您浏览viewmodel代码,您应该找到类似于上面的内容。当CanRemove返回false时,将禁用按钮/菜单项。要传播此状态的更改,DelegateCommand实现RaiseCanExecuteChanged。这就是按钮被禁用的方式,即使它没有明确存在于XAML中。