2011-06-28 91 views
0

我有一個WPF 4.0應用程序,我正在使用WPF DataGrid。我想要的是在我的視圖上使用導航按鈕來更改SelectedItem DataGrid,而不是讓用戶通過單擊DataGrid來更改SelectedItem。我在我的ViewModel中使用ICollectionView作爲我的DataGrid的ItemsSource。以下是我迄今爲止:防止用戶更改DataGrid的SelectedItem

NextCommand(視圖模型):

DefaultView.MoveCurrentToNext(); // DefaultView is an ICollectionView 
SelectedItem = DefaultView.CurrentItem as MyProperty; 

數據網格(查看):

<DataGrid ItemsSource="{Binding Path=DefaultView}" 
      SelectedItem="{Binding Path=SelectedItem}" 
      IsSynchronizedWithCurrentItem="True"> 
    ... 
</DataGrid> 

導航按鈕工作的偉大......但是,我不想以允許用戶單擊DataGrid以更改SelectedItem。任何想法如何實現這一目標?我玩過DataGrid_SelectionChanged事件,但問題是在SelectedItem上的綁定更新ViewModel,甚至在這個事件觸發之前。我更喜歡SelectedItem沒有被更改兩次(一次當用戶點擊時,兩次當它被設置回原來的)。我行使用的代碼,如果需要的背後...

回答

1

顯然,你必須通過一個自定義的DataGrid模板來禁用它:

http://www.wpfsharp.com/2011/05/how-to-disable-row-selection-in-a-wpf-datagrid/

出於好奇,爲什麼你要這麼做?我的意思是你爲什麼要禁止用戶通過單擊來選擇一行,但是允許用戶通過使用某些導航按鈕來間接選擇一行?

+0

我會檢查一下。我正在使用DataGrid來顯示需要按特定順序發生的步驟列表。隨着步驟完成,它們將被標記爲完成。我不希望用戶按錯誤順序完成這些步驟。 – Brent