首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目录按钮未在UserControl中运行执行操作

目录按钮未在UserControl中运行执行操作
EN

Stack Overflow用户
提问于 2018-03-01 03:58:39
回答 1查看 49关注 0票数 0

我有一个从Catel 4.5升级到Catel 5.3的WPF应用程序。我有许多用于数据输入和编辑的UserControls。我在用户控件的顶部有一个Add按钮,还有一个数据网格,它的行包括一个Edit和Delete按钮。这三个按钮都使用自定义图像按钮。当我运行应用程序并加载用户控件视图/视图模型时,调试显示找到了3个命令。

14:33:11:499 => DEBUG 1注销唯一标识符为'3‘的视图模型'CaddRemoteJobManager.ViewModels.ProjectsViewModel’上的命令14:33:11:501唯一标识符为'3‘的视图模型'CaddRemoteJobManager.ViewModels.ProjectsViewModel’上的=> DEBUG 1未注册命令14:33:11:502 => DEBUG 1注册唯一标识符为'3‘的视图模型'CaddRemoteJobManager.ViewModels.ProjectsViewModel’上的命令14:33:11:503 => DEBUG 1找到视图模型'ProjectsViewModel‘上的命令'AddProject’14:33:11:504=> DEBUG 1在视图模型'EditProject‘上找到命令'ProjectsViewModel’14:33:11:505 => DEBUG 1在视图模型'DeleteProject‘上找到命令'ProjectsViewModel’14:33:11:507在视图模型=>上使用唯一标识符'3‘调试1注册的命令

当我单击Add按钮时,Execute操作是never run。当我在DataGrid中选择“编辑”或“删除”按钮时,将运行执行操作。

这些按钮按如下方式初始化:

代码语言:javascript
复制
  AddProject = new Command(OnAddProjectExecute, null, "AddProject");
  EditProject = new Command(OnEditProjectExecute, null, "EditProject");
  DeleteProject = new Command(OnDeleteProjectExecute, null, "DeleteProject");

这是“添加”按钮的XAML

代码语言:javascript
复制
      <controls:ImageButton Image="../Images/Add-32x32-32.png"
                        Command="{Binding AddProject}"
                        ImageHeight="32" ImageWidth="32"
                        Height="50" Width="Auto"
                        Content="Add" HorizontalContentAlignment="Left"
                        ToolTip="Add a new project">
  </controls:ImageButton>

这是Add按钮的Execute操作...

代码语言:javascript
复制
private void OnAddProjectExecute()
{
  var vm = TypeFactory.Default.CreateInstance<AddEditProjectViewModel>();
  vm.Project = new Project(string.Empty, string.Empty, string.Empty);
  MainWindowViewModel.GetViewModel().SelectedControl = new AddEditProjectView(vm);
}

这是“编辑”按钮的XAML

代码语言:javascript
复制
              <controls:ImageButton Image="../Images/Edit-16x16-32.png"
                                  Command="{Binding DataContext.EditProject, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"
                                  ImageHeight="16" ImageWidth="16"
                                  Margin="-7"
                                  Height="32" Width="32" ToolTip="Edit the selected project"/>

这是编辑按钮的执行操作...

代码语言:javascript
复制
    private async void OnEditProjectExecute()
{
  var vm = TypeFactory.Default.CreateInstance<AddEditProjectViewModel>();
  vm.Project = SelectedProject;
  MainWindowViewModel.GetViewModel().SelectedControl = new AddEditProjectView(vm);
}

我不知道为什么“编辑”和“删除”按钮在DataGrid中起作用,而UserControl级别的“添加”按钮却不起作用。我在“编辑”视图中使用“保存”和“取消”按钮时遇到了同样的问题。它们也位于视图的顶层。

enter image description here

EN

回答 1

Stack Overflow用户

发布于 2018-03-01 20:33:13

  1. 不确定您使用的目录是否正确。您应该手动创建视图模型(就像在命令中所做的那样)。
  2. 您是否检查过输出窗口中是否有绑定错误?我不能访问整个xaml,但是我的直觉告诉我您没有绑定到add按钮中正确的DataContext。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49037592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档