Я пытаюсь закрыть окно, нажимая кнопку в другом окне и получая System.InvalidOperationException: 'Вызывающий поток не может получить доступ к этому объекту, поскольку он принадлежит другому потоку.'
Окно, которое я хочузакройте созданный CreateWindow ().У него есть кнопка закрытия, но я хочу закрыть это окно, нажав на кнопку, расположенную в другом окне.Кнопка в другом окне вызывает «ReturnToSearchCommand» и создает RelayCommand «ReturnToSearch», где расположен код для закрытия внешнего окна.
Код:
private void CreateWindow()
{
_buttonWindow = new ButtonList();
var stackPanel = new StackPanel { Orientation = Orientation.Vertical };
Button _closeButton = new Button();
_closeButton.Content = "Close";
_closeButton.Click += new RoutedEventHandler(CloseWindow);
stackPanel.Children.Add(_closeButton);
_buttonWindow.Content = stackPanel;
_buttonWindow.Height = (_companiesDictionary.Keys.Count + 2) * 35;
_buttonWindow.ShowDialog();
}
private void CloseWindow(object sender, RoutedEventArgs e)
{
_buttonWindow.Close();
}
public virtual ICommand ReturnToSearchCommand
{
get
{
return new RelayCommand(ReturnToSearch, delegate () { return true; });
}
}
private void ReturnToSearch()
{
ShowSearchPanel = true;
PrimaryCategory = null;
_buttonWindow.Close();
}