2012-03-29 5 views
2

はF2、ダブルクリックして選択したセルでのタイピングによって活性化されます。 どのように私はこれらの(一部)製作中のトリガーを有効/無効にすることができますか?DataGridで編集を選択的に無効にする方法は?デフォルトの編集によって

+0

有効または無効にするトリガーの例はありますか? @Blam。 – Paparazzi

+0

私はみます、唯一のF2またはダブルクリックで編集するが、 –

答えて

3
datagrid.KeyDown += new KeyEventHandler(datagrid_KeyDown); 

void datagrid_KeyDown(object sender, KeyEventArgs e) 
    { 
     //obviously you'll have to add some code here 
     //if(!datagridIsInEditMode) then 
      if (Keyboard.IsKeyDown(Key.F2)) 
        datagrid.BeginEdit(); 
      else 
        e.Handled = true; 
    } 
+0

感謝を入力しないで欲しいです。私が深くデータグリッドを掘り下げていくにつれて、私はより多くディスパッションを受けます。イベントIsInEditModeプロパティは、そのままでは実装されていません。 =( –

+0

は、私はそれはTATAテンプレートモードが変更されたとき。だから私はそれを行うことがしたい時にデータグリッドを伝える方法が必要に切り替えている私には思える数分 –

2

私はクリーンな方法だけではデータグリッドの動作を残すことで、それはそれはやっている知っている、とedtingテンプレートに独自のコントロールを作成すると思います。 CustomTextBox(参照用)を呼び出します。 CustomTextBoxは、そのようなだけでF2キーへの対応として、あなたが好きなものなどを行うことをあなたがデータグリッドで奇妙な行動を作成し、カスタムコントロールのカスタム行動をカプセル化されていないその方法を持っています。

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock DataContext="{Binding SomeProperty}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    <DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <yourNamespace:CustomTextBox DataContext="{Binding SomeProperty}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellEditingTemplate> 
</DataGridTemplateColumn> 
+0

内の別の提案「を投稿するつもりです。 –

関連する問題