【发布时间】:2017-10-23 17:16:45
【问题描述】:
在 WPF 中,我有一个带有一些折叠行的 DataGrid。当我编辑一个单元格然后按 Enter 键时,如果下一行已折叠,则选择不会移动到下一个可见行。相反,我刚刚编辑过的单元格周围是一个虚线矩形,并且键入键盘根本不会导致任何操作。 知道如何使选择跳转到下一个可见行吗? 谢谢
示例(在框架 4.0 下): xml:
<Window x:Class="WpfDataGridEdit.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<DataGrid AutoGenerateColumns="False" Name="dataGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Value1}"/>
<DataGridTextColumn Binding="{Binding Path=Value2}"/>
</DataGrid.Columns>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Visibility" Value="{Binding Visibility}" />
</Style>
</DataGrid.RowStyle>
</DataGrid>
</Window>
背后的代码:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace WpfDataGridEdit
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private List<Row> rows = new List<Row>();
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
this.rows.Add(new Row { Value1 = i.ToString(), Value2 = "x", Visibility = i % 3 == 0 ? Visibility.Collapsed : Visibility.Visible });
this.dataGrid.ItemsSource = this.rows;
}
}
public class Row
{
private string value1;
public string Value1
{
get { return this.value1; }
set { this.value1 = value; }
}
private string value2;
public string Value2
{
get { return this.value2; }
set { this.value2 = value; }
}
private Visibility visibility;
public Visibility Visibility
{
get { return this.visibility; }
set { this.visibility = value; }
}
}
}
通过编辑行并输入回车,您应该会卡在第二行。
【问题讨论】:
-
请在提问时提供一个最小、完整和可验证的问题示例:stackoverflow.com/help/mcve
-
添加了这种行为的例子
标签: wpf datagrid cell visibility edit