2
私はDataGridを持ち、そのCellEditEndingイベントを使用しています。WPF DataGrid、CellEditEndingイベントでe.Cancel = trueの場合にフォーカスを保持
デフォルトでは、CellEditEngingイベントでは、コミットを取り消すと、カーソルを他のセルまたは他の行に移動できます。
編集をキャンセルすると他の方法でクエリが実行されますが、CellEditEngingイベントで入力されたものを修正しない限り、他のセルや他の行を移動できないようにしてください。
MainWindow.xaml.cs Code
public MainWindow()
{
InitializeComponent();
List<Student> sList = new List<Student>();
sList.Add(new Student() { Name = "Amar" });
sList.Add(new Student() { Name = "Sagar" });
sList.Add(new Student() { Name = "Kiran" });
dg1.ItemsSource = sList;
dg1.CellEditEnding += Dg1_CellEditEnding;
}
private void Dg1_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
TextBox txtBox = e.EditingElement as TextBox;
if (txtBox != null && txtBox.Text.Equals("Amar"))
e.Cancel = true; //my requirement is,once i cancel ,focus should not move to other rows or other cells,it should be remain on this cell
}
}
public class Student : INotifyPropertyChanged
{
private string name;
public string Name
{
get { return name; }
set
{
name = value;
OnPropertyChanged("Name");
}
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
:お返事ありがとうございます。コンパイルエラーが発生し、FindVisualChildByNameが見つかりません – nk1