2017-03-06 25 views
0

私のUWPでは、CanExecuteハンドラがトリガされません。ここに私のコードは次のとおりです。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

誰かがなぜ呼び出されないのですか?

答えて

1

GalaSoft.MvvmLightを使用して同じ問題が発生しました。ここでworkarroundが(ちょうどRelayCommandのRaiseCanExecuteChanged()関数を使用する)である:

private MyClass _selectedWorkItem; 

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

問題は、CommandManagerの設計によってUWPアプリの中には存在しないということです。

関連する問題