У меня есть DataGrid в WPF.
У меня есть ситуация, в которой, если выбрана одна строка, а затем пользователь выбирает другую, тогда должно появиться сообщение типа -
Вы уверены, что хотите выбрать это?
И если пользователь говорит «да», то должна быть выбрана только другая строка.
Но, в текущем случае, событие SelectionChanged
уже вызвано и новая строка выбрана.
Я пытался использовать привязку свойств
<Style TargetType="DataGridRow">
<Setter Property="IsEnabled" Value="{Binding IsToEnableRowSelection, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"/>
</Style>
В конце -
private void MyDataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (MessageBox.Show("Are you sure you want save changes?", "Confirm", MessageBoxButtons.YesNo))
{
e.Handled = false;
IsToEnableRowSelection = true;
}
else
{
e.Handled = true;
IsToEnableRowSelection = false;
}
}
Объявление свойства с событием INotify -
public bool IsToEnableRowSelection
{
get
{
return enableSelectedRow;
}
set
{
enableSelectedRow = value;
OnPropertyChanged("IsToEnableRowSelection");
}
}
protected void OnPropertyChanged([CallerMemberName()] string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
Но я не могу получить желаемое поведение.
Итак, чтобы подвести итог, я хочу, чтобы я выбрал новую строку, только если пользователь подтвердит ее выбор в окне сообщения. В противном случае старая выбранная строка должна оставаться только выбранной.