在我的UWP中,CanExecute处理程序不会被触发。下面是我的代码:
RelayCommand
EditWorkItemEntry = new RelayCommand(async () =>
{
var diag = new EditWorkItemEntryDialog(SelectedWorkItem);
await diag.ShowAsync();
await ReloadWorkItems();
}, () =>
{
return SelectedWorkItem != null;
});使用该命令的代码:
<mt:MtPage.BottomAppBar>
<CommandBar>
<AppBarButton Icon="Edit" x:Uid="EditWorkItemEntry" Command="{x:Bind ViewModel.EditWorkItemEntry, Mode=OneWay}" />
</CommandBar>
</mt:MtPage.BottomAppBar>以及应该触发它的代码:
<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
有没有人知道为什么它没有被调用?
发布于 2017-03-06 23:43:25
我在使用GalaSoft.MvvmLight时遇到了同样的问题。下面是一个变通方法(只需使用RelayCommand的RaiseCanExecuteChanged()函数):
private MyClass _selectedWorkItem;
public MyClass SelectedWorkItem
{
get { return _selectedWorkItem; }
set
{
_selectedWorkItem = value;
EditWorkItemEntry.RaiseCanExecuteChanged();
}
}问题是CommandManager并不存在于UWP应用程序的设计之中。
https://stackoverflow.com/questions/42629675
复制相似问题