2

这个问题可能有点误导。

这是具有一些虚拟值的 DataGrid 的屏幕截图(下面提供的代码) DGV

有没有办法使单元格未覆盖的白色区域可点击?我的意图:我想要完整的行选择。这可以通过SelectionUnit="FullRow"which 很好但是我怎样才能使白色区域隐式选择整行而不扩展可用单元格的宽度避免后面的代码

这是复制代码: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();
        }
    }
}
4

1 回答 1

3

既然您提到您不想扩大列宽。不过,这可以通过一个 hacky 解决方案来实现(by providing dummy column at last without any binding and setting width to *)

您必须设置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>

快照 -

在此处输入图像描述

于 2013-10-20T09:51:39.990 回答