【发布时间】:2018-03-23 13:14:19
【问题描述】:
在 WPF 中使用 DataGrid 时,当直接从 UI 上的 DataGrid 添加新行时,SelectedItems 属性的大小总是在增长 - 即使在 UI 上总是选择单行进行编辑。
如何克服这个问题?为什么 SelectedItems 属性不能反映 UI 上实际选定项目的数量?
我的代码:
SampleWindow.xaml
<Window x:Class="ALMClient.Controls.SampleWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ALMClient.Controls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.9*"/>
<RowDefinition Height="0.1*"/>
</Grid.RowDefinitions>
<TabControl Name="tabControl" Grid.Row="0">
<TabItem Header="Test">
<DataGrid Name="dataGrid" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" CanUserAddRows="True" CanUserDeleteRows="True" AutoGenerateColumns="True"
ItemsSource="{Binding GeneralTasks}" SelectionMode="Single" SelectionChanged="dataGrid_SelectionChanged" SelectionUnit="FullRow">
</DataGrid>
</TabItem>
</TabControl>
<TextBox Name="selectionBox" Grid.Row="1">
</TextBox>
</Grid>
SampleWindow.xaml.cs
using System.Windows;
namespace ALMClient.Controls
{
public partial class SampleWindow : Window
{
public SampleWindow()
{
InitializeComponent();
}
private void dataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
this.selectionBox.Text = this.dataGrid.SelectedItems.Count.ToString();
}
}
}
【问题讨论】:
-
您的问题不清楚。有多少选定的行,TextBox 显示多少?
-
@mm8 一直有单个项目被选中,但是 SelectedItems.Count 一直在增加 - 2、3、4 等等。
标签: c# wpf datagrid selection rows