2012-04-12 72 views
1

我有一個主要由TemplateColumns組成的數據網格。我遇到了這樣的問題,即在切換行時,它會出現在單元格中,然後是單元格內的內容(即文本框或togglebutton)。理想的情況是通過列中的標籤將焦點放在內容上並跳過單元格。我可能會錯誤地解釋發生的事情,但在視覺上似乎是這樣。我曾嘗試過:DataGrid Tabbing從單元格到內容

  <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它着重之前在它的控制,同時按Tab鍵。

我在尋找一個解決方案,我碰到這樣的: http://iyalovoi.wordpress.com/2009/08/21/wpf-datagrid-tabbing-from-cell-to-cell-does-not-set-focus-on-control/

您可以將FocusAttacher附加到模板列內的控制,它會從中偷焦點。它對我很好。

+0

這工作得很好,謝謝! – Josh 2012-04-12 20:57:29

+0

這不允許焦點通過按Tab鍵離開控件。 – Nick 2015-05-05 14:32:32

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 2013-10-04 12:44:26

+0

這使問題更加嚴重。在使用2個選項卡將焦點集中到DataGridTemplateColumn內部的控件之前,現在選項卡完全跳過它,因此無法使用控件而不使用鼠標。 – Nick 2015-05-05 14:21:17