这个问题可能有点误导。
以下是DataGrid的屏幕截图,其中包含一些虚拟值(下面提供的代码)
有没有办法让白色区域不被单元格覆盖?我的意图:我希望有完整的行选择。这可以通过SelectionUnit="FullRow"
来实现,这很好但是如何让白色区域隐式选择整行而不用扩展宽度可用的单元格和避免代码隐藏
这是repro代码: XAML:
<Window x:Class="DGVRowSelectTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" DataContext="{Binding RelativeSource={RelativeSource Self}}">
<DataGrid ItemsSource="{Binding Names}" SelectionMode="Single" SelectionUnit="FullRow" >
</DataGrid>
</Window>
虚拟代码背后(只设置两个条目)
using System.Collections.Generic;
using System.Windows;
namespace DGVRowSelectTest
{
public partial class MainWindow : Window
{
private IList<KeyValuePair<string, string>> _names = new List<KeyValuePair<string, string>>{new KeyValuePair<string, string>("A1", "A2"),new KeyValuePair<string, string>("B1","B2")};
public IList<KeyValuePair<string, string>> Names{get { return _names; }set { _names = value; }}
public MainWindow()
{
InitializeComponent();
}
}
}
答案 0 :(得分:3)
由于您已经提到过您不想扩展列宽。这可以通过(by providing dummy column at last without any binding and setting width to *)
的hacky解决方案来实现。
您必须将AutoGenerateColumns
设置为False
,因为您现在明确指定了列。
<DataGrid ItemsSource="{Binding Names}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Key}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Value}"/>
<DataGridTemplateColumn Width="*"/>
</DataGrid.Columns>
</DataGrid>
快照 -