Код: Выделить всё
private void ShiftsDataGrid_OnBeginningEdit(object? sender, DataGridBeginningEditEventArgs e)
{
if (e.Column == ShiftIdColumn && !e.Row.IsNewItem)
{
CancelColorPopup();
e.Cancel = true;
MessageBox.Show("Its not allowed to edit an existing id for shifts");
}
}
Сейчас я создаю Тест пользовательского интерфейса через System.Windows.Automation, где в моем коде сейчас есть:
Код: Выделить всё
var task = Task.Run(() =>
{
var cell = mainWindow.FindDescendantById("ShiftsDataGrid_Row0_Column0");
var parentCell = cell.GetParent();
parentCell.InsertValue("0");
});
WaitForCondition(() =>
{
AutomationElement.
var okButton = AutomationElement.RootElement.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.AutomationIdProperty, "2"));
if (okButton == null)
return false;
okButton.Click();
return true;
}, TimeSpan.FromSeconds(200));
Во время этого блока я пытался в других потоках найти это MessageBox, но безуспешно. Что бы я ни делал, я не могу найти свойство AutomationIdProperty со значением 2, которое является кнопкой «ОК» для окна сообщений. Я проверил это с помощью Accessibility Insight для Windows.

Я предполагаю, что здесь блокируется поток пользовательского интерфейса, но я не уверен. Есть ли у кого-нибудь хороший подход к тому, как справиться с этой ситуацией?
Подробнее здесь: https://stackoverflow.com/questions/787 ... messagebox