2011-07-05 85 views
2

我有一個ListView它綁定到一個ListCollectionViewListCollectionView.Refresh()和RoutedCommand之間的奇怪行爲

在同一窗口中,我有一個Button與附加的RoutedCommand沒有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()到一個新的過濾器適用於我的收藏,Button被禁用...直到我在ListView點擊某行!

我隔離了Refresh()RoutedCommand之間的問題(如果我從Button中排除命令,它將保持啓用狀態)。

你以前聽過類似的東西嗎?你有什麼想法做什麼?

預先感謝您。

+0

請向我們展示RefreshCommand是如何構造的,它是從ICommand繼承的?如果是這樣,請嘗試執行CanExecute,並在默認情況下返回true –

+0

@anvarbek感謝您的回覆。 RefreshCommand是從ICommand派生的RoutedCommand。我已經嘗試了你的建議與CanExecute ...沒有運氣! – Dummy01

回答

0

我放棄......我會去的RelayCommand解決方案...

謝謝大家誰試圖幫助!

0

我建議檢查你的RefreshCommandExecuted,你以某種方式影響命令的啓用狀態。 此致敬禮。

+0

謝謝你的快速回答。我只是添加了RefreshCommandExecuted的代碼。正如你所看到的,沒有什麼奇怪的。順便說一下,R​​efresh()不是從按鈕調用,而是從我的視圖模型的set屬性中調用。 – Dummy01

+0

不知道爲什麼你使用{x:Static}靜態擴展,如果RefreshCommand在ViewModel中,那麼你應該簡單地在你的按鈕中說{Binding RefreshCommand}並且它會從DataContext中選取它。 –

+0

@anvarbek該命令是不在ViewModel中(我知道...)。 – Dummy01