2012-04-12 10 views
1

私は主にTemplateColumnsで構成されるDataGridを持っています。私は、行をタブで移動するとセルに移動し、セル内のコンテンツ(つまり、テキストボックスやトグルボタン)が表示されるという問題が発生しています。理想的な状況では、列をタブで移動するとコンテンツにフォーカスが置かれ、セルがスキップされます。私は間違って起こっていることを解釈しているかもしれませんが、視覚的にはそうであるようです。私は試してみた:DataGridタブはセルからコンテンツに移動します

  <DataGridTemplateColumn Header="Group Value" 
            MinWidth="30" 
            Width=".02*"> 
       <DataGridTemplateColumn.CellStyle> 
        <Style TargetType="{x:Type DataGridCell}"> 
         <Setter Property="IsTabStop" 
           Value="False" /> 
        </Style> 
       </DataGridTemplateColumn.CellStyle> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBox Text="{Binding SomeBinding, 
               ValidatesOnDataErrors=True, 
               UpdateSourceTrigger=PropertyChanged}" 
           IsReadOnly="{Binding RelativeSource={RelativeSource FindAncestor, 
               AncestorType={x:Type DataGrid}}, 
               Path=DataContext.IsReadOnly}" 
           Style="{StaticResource TextBoxStyle}" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

しかし、それは私がそう思ったように動作しません。誰でも助けてくれますか?

おかげ

答えて

2

あなたは正しいが、タブ移動しながら、それはそれ内のコントロールに焦点を当てて前DataGridTemplateColumnを集中するように見えるん。ソリューションのための私の検索で

は、私はこれに出くわした: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/

あなたはテンプレート列内のコントロールにFocusAttacherを添付することができ、そしてそれからフォーカスを盗むでしょう。それは私にとって素晴らしい仕事でした。

+0

これはすばらしい、ありがとう! – Josh

+0

これは、Tabキーを押してフォーカスをコントロールから離れることを許可しません。 – Nick

2

私は別のブログで見つけた多くのことを試しましたが、うまくいかなかったのです。 しかし、私はチャンピオンのように働いたシンプルで効果的なテクニックを見つけました!

これは、2ステップだけ必要です。あなたのリソースファイル内

1.追加のスタイル:

<!-- Cell Editing For DataGrid--> <Style x:Key="CellEditingStyle" TargetType="DataGridCell"> <Setter Property="IsTabStop" Value="False" /> </Style> 

2.

は、あなたのデータグリッドでこのスタイルを追加します。それは

<DataGridTemplateColumn Header="{DynamicResource grdLoadsPerMonths}" 
         CellStyle="{StaticResource CellEditingStyle}"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding Path=LoadsPerMonth, UpdateSourceTrigger=LostFocus}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

です。これはすべての問題を解決しました。これ以上の作業はなく、クラスを追加する必要はありません。

+0

それは魅力のように働いた。 – Hukam

+0

これは問題をさらに悪化させます。 2つのタブがDataGridTemplateColumn内のコントロールにフォーカスを移す前に、今タブは完全にスキップし、マウスを使用せずにコントロールを使用することはできません。 – Nick

関連する問題