首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发CanExecute

未触发CanExecute
EN

Stack Overflow用户
提问于 2017-03-06 23:39:12
回答 1查看 109关注 0票数 0

在我的UWP中,CanExecute处理程序不会被触发。下面是我的代码:

RelayCommand

代码语言:javascript
复制
EditWorkItemEntry = new RelayCommand(async () =>
{
    var diag = new EditWorkItemEntryDialog(SelectedWorkItem);
    await diag.ShowAsync();
    await ReloadWorkItems();
}, () =>
{
    return SelectedWorkItem != null;
});

使用该命令的代码:

代码语言:javascript
复制
<mt:MtPage.BottomAppBar>
  <CommandBar>
    <AppBarButton Icon="Edit" x:Uid="EditWorkItemEntry" Command="{x:Bind ViewModel.EditWorkItemEntry, Mode=OneWay}" />
  </CommandBar>
</mt:MtPage.BottomAppBar>

以及应该触发它的代码:

代码语言:javascript
复制
<mtControls:DataGrid ItemsSource="{Binding WorkItems}" SelectedItem="{x:Bind ViewModel.SelectedWorkItem, Mode=OneWay}">
    <!-- More definition logic -->
</mtControls:DataGrid>

mtControls:DataGrid映射到MyToolkit DataGrid,可以在以下位置找到:https://github.com/MyToolkit/MyToolkit/tree/master/src/MyToolkit.Extended/Controls/DataGrid

有没有人知道为什么它没有被调用?

EN

回答 1

Stack Overflow用户

发布于 2017-03-06 23:43:25

我在使用GalaSoft.MvvmLight时遇到了同样的问题。下面是一个变通方法(只需使用RelayCommand的RaiseCanExecuteChanged()函数):

代码语言:javascript
复制
private MyClass _selectedWorkItem;

public MyClass SelectedWorkItem
{
  get { return _selectedWorkItem; }
  set
  {
     _selectedWorkItem = value;
     EditWorkItemEntry.RaiseCanExecuteChanged();
  }
}

问题是CommandManager并不存在于UWP应用程序的设计之中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42629675

复制
相关文章

相似问题

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