2011-07-05 4 views
2

ListCollectionViewにバインドされています。ListCollectionView.Refresh()とRoutedCommandの間の変な動作

私はButtonRoutedCommandが添付されており、CanExecuteハンドラはありません。

public static RoutedCommand RefreshCommand = new RoutedCommand(); 

<CommandBinding Command="{x:Static local:DatabaseTaskViewer.RefreshCommand}"Executed="RefreshCommandExecuted"/> 

<Button Command="{x:Static local:DatabaseTaskViewer.RefreshCommand}">Refresh</Button> 



private void RefreshCommandExecuted(object sender, ExecutedRoutedEventArgs e) 
{ 
    Presenter.Process(); 
    e.Handled = true; 
} 

問題は、私は私のコレクションに新しいフィルタを適用するListCollectionView.Refresh()を行うたび、私は私のListViewに行をクリックするまで、Buttonは...無効になってしまうことです!

Refresh()RoutedCommandの間で問題を切り離しました(無効のままにしておいた場合は、Button)。

これまでに聞いたことがありますか?何をすべきか考えていますか?

ありがとうございます。

+0

plsはRefreshCommandがどのように構築されているかを示します。それはICommandから継承していますか?もしそうなら、CanExecuteを実装して、デフォルトでtrueを返してください。 –

+0

@anvarbekあなたの返事をありがとう。 RefreshCommandは、ICommandから派生したRoutedCommandです。 CanExecuteで提案したことを既に試してみました。 – Dummy01

答えて

0

私はあきらめて...私は... RelayCommandソリューションを助けようとした誰も

感謝を行きます!

0

RefreshCommandExecutedを確認することをお勧めします。コマンドの有効状態に何らかの影響を与えます。よろしくです。 よろしくお願いします。

+0

迅速な回答ありがとうございます。 RefreshCommandExecutedのコードを追加しました。あなたが見ることができるように、そこには何も変わっていません。ちなみにRefresh()はボタンから呼び出されるのではなく、ビューモデルのセットプロパティから呼び出されます。 – Dummy01

+0

{x:Static}静的拡張を使用する理由がわからない場合、RefreshCommandがViewModelにある場合、ボタンで{Binding RefreshCommand}と言うだけで、DataContextからピックアップします。 –

+0

@anvarbek ViewModelではなく(私は知っている...)。 – Dummy01

関連する問題