8

私はこの質問が以前に尋ねられたことを知っていますが、私が探しているものを見つけることができませんでした。

    private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

if (oOrdItem.ItemNo == 0)
                {
                    e.Handled = true;
                    MessageBox.Show("Please save the order item", "Save");
                    return;
                }
}

呼び出しe.Handled = true; ても、データグリッド行が選択されます。dataGrid1.SelectedIndex =-1;selectionchangedイベントが再度トリガーされるため、呼び出したくありません。dataGrid1.UnSelectAll(); また、selectionchangedイベントをキャンセルする他の方法を試しましたか?

4

2 に答える 2

-1

代替の実装について考えましたか? Binding交換前の確認方法等を考えておりSelectedItemます。実例:

<DataGrid ItemsSource="..." SelectedItem="{Binding SelectedEntry}" />

基盤となる VM は次のようになります。

public class SampleVm : ViewModelBase//assuming that you are using such a base class
{
   private object _selectedEntry;
   public object SelectedEntry
   {
       get { return _selectedEntry; }
       set 
       {
           if (!SavePrevItem())
               return;

           _selectedEntry = value;
           RaisePropertyChanged("SelectedItem"); // or something similar
       }
   }

   private bool SavePrevItem()
   {
       // your logic here
   }
}
于 2013-03-21T11:24:27.570 に答える