Каждый ListViewItem содержит кнопку, которая выполняет команду (
Код: Выделить всё
EditClipboardTextCommand
Проблема:
Когда начинается приложение, нажатие кнопки работает, как и ожидалось .
После минимизации приложения к системному лотке и его восстановления, кнопка больше не работает.
Если я сразу после запуска приложения, кнопка, кнопка больше никогда не работает, пока я снова не перезагружу Application.
фрагменты кода
Минимизация приложения ( mainwindow.xaml.cs ) : < /p>
Код: Выделить всё
private void MinimizeApplication()
{
Logger.Debug("Minimizing application.");
if (viewModel is not
{
IsSettingsWindowOpen: false, IsClearAllHistoryWindowOpen: false, IsClearAllHistoryWindowOpen: false
}) return;
Hide();
WindowState = WindowState.Minimized;
}
< /code>
Восстановление приложения из системного лотка (MainWindow.xaml.cs
Код: Выделить всё
private void MaximizeApplication()
{
Logger.Debug("Maximizing application.");
if (WindowState != WindowState.Normal)
{
SetWindowsLocation();
Show();
Logger.Debug("Restore the window if it's minimized.");
WindowState = WindowState.Normal;
Logger.Debug("Bring the window to the foreground.");
this.Activate();
Logger.Debug("Temporarily set the window as topmost.");
this.Topmost = true;
this.Topmost = false;
}
else
BringApplicationTtoTheFront();
isApplicationOnFocus = true;
}
private void BringApplicationTtoTheFront()
{
Logger.Debug("Bringing application to the front.");
this.Activate();
this.Topmost = true;
this.Topmost = false;
this.Focus();
}
< /code>
элемент Listview с кнопкой (MainWindow.xaml
Код: Выделить всё
< /code>
Настройка ссылки на главное окно (MainWindow.xaml.cs
Код: Выделить всё
public MainWindow()
{
// Set reference to main window in the application.
ReferenceClass.MainWindow = this;
}
using ClipKeeper.Forms;
using ClipKeeper.Source.MVVM.Model;
using ClipKeeper.Source.MVVM.ViewModel;
using ClipKeeper.Source.Utils;
using System;
using System.Windows.Input;
namespace ClipKeeper.Source.Commands
{
internal class EditClipboardTextCommand : ICommand
{
public event EventHandler? CanExecuteChanged;
public BaseViewModel ViewModel { get; set; }
public EditClipboardTextCommand(BaseViewModel viewModel)
{
ViewModel = viewModel;
}
public bool CanExecute(object? parameter)
{
return true;
}
public void Execute(object? parameter)
{
if (parameter is ClipboardItem clipboardItem)
{
EditTextWindow editTextWindow = new EditTextWindow(clipboardItem);
editTextWindow.Owner = ReferenceClass.MainWindow;
ReferenceClass.EditTextWindow = editTextWindow;
ViewModel.EditClipboardTextWindowOpen = true;
editTextWindow.ShowDialog();
ViewModel.EditClipboardTextWindowOpen = false;
}
}
}
}
< /code>
Дополнительные сведения: < /strong>
Командовая привязка работает перед минимизацией, но перестает работать после восстановления из системного лотка.
Другие элементы пользовательского интерфейса в ListViewItem < /code> оставаться интерактивными.
НЕТ ошибок не допускается, но нажатие кнопки ничего не делает.EditTextWindow< /code>).
Что я попробовал:
подтверждение того, что DataContext < /code> кнопки все еще правильно установлен после восстановления приложения.
Обеспечение обеспечения команды остается активным .
Проверка, если CanexeCuteChanted пожары после восстановления приложения.
Обновления ListView < /code>. < /p>
Вопрос: < /strong>
Что может привести к тому, что привязка команды кнопки прекратила работать после минимизации и восстановления от системного лотка?
Как я могу убедиться, что кнопка остается функциональной после восстановления приложения? < /P>
Подробнее здесь: https://stackoverflow.com/questions/794 ... ystem-tray