DataGridを行選択モード(つまり、SelectionUnit="FullRow"
)で使用しています。私は、真の行選択(セルレベル選択なし)を行うために、ユーザーが行をハイライト表示したときに現在のセルの周りに配置されている境界線を削除したいだけです。私は現在のセルを維持しているグリッドの概念を気にしません。おそらく現在のセルのスタイルを変更することによって、その厄介な現在のセルの境界線を削除したいだけです。これを行う最も簡単な方法は何ですか?FullRow選択モードでDataGridの現在のセルの境界線を無効にする
答えて
あなたはDataGridCellテンプレートを上書きして、ためmultitriggerを追加することができますが、セルが編集可能な場合にのみ、境界線を表示したい場合は0
<DataGrid ...
SelectionUnit="FullRow">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<!-- Update from comments.
Remove the focus indication for the selected cell -->
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
</Style>
</DataGrid.CellStyle>
<!-- ... -->
</DataGrid>
<Style x:Key="DataGrid" TargetType="DataGrid">
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
<Setter Property="Background" Value="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}" />
</Style>
</Setter.Value>
</Setter>
</Style>
これらの2行を追加すると、ResourceDictionary、thanks @mariusによって適用されるスタイルを維持できます。 – Rachel
にDataGridCell
ためBorderThickness
を設定し、選択した可能性がありセルはIsSelectedで、IsReadOnlyではありません。あなたが列またはDataGridの
<ControlTemplate x:Key="MellowDataGridCellTemplate" TargetType="{x:Type DataGridCell}">
<Grid>
<ContentPresenter VerticalAlignment="Center" />
<Rectangle Name="FocusVisual" Stroke="White" StrokeThickness="1" Fill="Transparent" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" IsHitTestVisible="false" Opacity="0" />
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsReadOnly" Value="False" />
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="FocusVisual" Property="Opacity" Value="1"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type DataGridCell}" x:Key="MellowGridDataGridCell">
<Setter Property="Template" Value="{StaticResource MellowDataGridCellTemplate}" />
</Style>
スタイルでテンプレートを使用して、スタイル
<DataGrid CellStyle={StaticResource MellowGridDataGridCell >
...
</DataGrid>
を使用するために、真のIsReadOnlyの=を設定した場合、その後何の境界線はセルに表示されませんxceed
DataGridControl
を使用している場合はNavigationBehavior
をRowOnly
<xcdg:DataGridControl NavigationBehavior="RowOnly" SelectionMode="Single" ....
ここでもう一度答えてみましたが、これは近いですが、フォーカス矩形を取り除いていませんでした。すべての罫線を削除する方法は次のとおりです。
また<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</DataGrid.Resources>
、技術的にこれらの細胞は、まだ次の行にタブキー事前の代わりに、次のセルを作るために、(あなたはそれを見ていない)、フォーカスを得るか、私はに基づいてセルのスタイルを定義するため、次のものも追加します。
<DataGrid.Resources>
<Style x:Key="NoFocusDataGridCell" TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Focusable" Value="False" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
</DataGrid.Resources>
...次に、最初の列定義以外のすべてに適用します。こうすると、タブキーは次の行に移動し、次のセルには移動しません。
しかし、国境に戻る。それらを隠したいが、スペーシングの理由でレイアウトの一部にしたい場合は、上記を次のように変更してください。
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</DataGrid.Resources>
お楽しみください! :)
これはもっと近いですが、まだ注意が必要です。カラム0をクリックすると、アクティブな選択ハイライトブラシが(予想どおり)表示されますが、カラム1+をクリックすると非アクティブな選択ハイライトブラシ(予期せぬ)が表示されます。アクティブなブラシは、0桁目をクリックするまでスティックします(他の行をクリックすると)。アクティブブラシは、DataGridがフォーカスを失うまでスティックします。 –
興味深い。私はそれを前に見ていないが、私は今それを間違いなく試してみるだろう。しかし、私がそれを追加した理由は、タブ順序を修正するためでした。つまり、修正はfocusable = falseからistabstop = falseに変更するだけの簡単な方法かもしれません。それは同じことを達成するはずです。 – MarqueIV
私は 'IsTabStop =" False "の調整を試みただけで、すべてのケースをカバーしているようです。技術的には、非最初の列のセルは、クリックするとフォーカスを受け取り、左/右に移動して他のセルにフォーカスを移動できますが、タブは次の行の最初のセルまたは次のコントロールに移動します(最後の行のセルの1つにフォーカスがある場合) 。しかし、私はそれが問題だとは思わない。多分スクリーンリーダーにとって?とりあえずありがとう! –
- 1. WPF Datagridで無効なセルの行選択を許可する
- 2. SWT TableViewerでセルの境界線を有効にする
- 3. DataGridの行とセルの境界線をすべて削除する
- 4. ブートストラップヘッダーの境界線を無効にする
- 5. C#WPF Datagrid特定の列の選択セルを無効にする方法
- 6. 無線選択で無効にする選択/ドロップダウンを有効にする
- 7. DataGridのセルを無効にする
- 8. ボタンの境界線と無効な外観を変更する
- 9. 選択したDataGrid行の列の境界線の色を設定するには?
- 10. 選択タグに境界線を追加するには
- 11. NatTableでセルの境界線を非表示にするには
- 12. コレクションビューセルの境界線の色Swiftで選択解除3
- 13. 境界線を無効にする.htaスプラッシュスクリーン
- 14. JTable:行の選択をクリアするときにセルの周りの境界線を削除する
- 15. Adobe Photoshop Scripting - 現在の選択範囲の境界ボックスを選択する方法
- 16. Flex Spark DataGrid - 行の選択を無効にする
- 17. HTTPファイルのアップロードの境界線の選択
- 18. Excel - 現在の日付のワークブックでセルを選択するマクロ
- 19. UICollectionView太い境界線を持つセル
- 20. Qt:QTabBarの選択されたタブの境界線を非表示にする
- 21. ITextSharp:表のセルの境界線の色を設定する
- 22. 行の境界線上の境界線と底面の境界線の1本の線はありますか?
- 23. グラフjs - 境界線内の線の境界線を切り捨てる線図
- 24. 最後のセルの前に境界線を削除します
- 25. 現在の選択範囲の境界ボックスを取得するにはどうすればよいですか?
- 26. WPF DataGrid - 無効にすると選択を保持する
- 27. EPPlusセルの境界線の色を変更する
- 28. iPhone:グループテーブルのセルの境界線スタイルをカスタマイズする
- 29. 太字のセルの境界線を作成するJTable
- 30. DataGridで特定のセルの編集を無効にする
ユーザーが矢印キーを使用している場合、これは機能しません。点線の選択枠は、セル内にまだ表示されます。 –
@Michael Yanni:あなたは 'FocusVisualStyle'について話しています。それを無効にするには、 ' のように' CellStyle'でnullに設定してください。 –
ボーダーセットで0? – ygoe