Der Button -Befehl funktioniert nicht mehr funktioniert nach der Minimierung der SystemablageC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Der Button -Befehl funktioniert nicht mehr funktioniert nach der Minimierung der Systemablage

Post by Anonymous »

Ich habe eine WPF -Anwendung, die zum Kopieren von Ereignissen und Speichern von Clipboard -Elementen in einer ListView hört. Jedes ListViewItem enthält eine Schaltfläche, mit der ein Befehl ausgeführt wird (

Code: Select all

EditClipboardTextCommand
) So öffnen Sie einen EditTextWindow . Nachdem die Anwendung auf das Systemfach minimiert und wiederhergestellt wird, funktioniert die Schaltfläche nicht mehr. Starten Sie die Anwendung neu. -Override ">

Code: Select all

private void MinimizeApplication()
{
Logger.Debug("Minimizing application.");
if (viewModel is not
{
IsSettingsWindowOpen: false, IsClearAllHistoryWindowOpen: false, IsClearAllHistoryWindowOpen: false
}) return;
Hide();
WindowState = WindowState.Minimized;
}
< /code>
Wiederherstellung der Anwendung aus der Systemschale (MainWindow.xaml.cs
):

Code: Select all

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 -Element mit einer Schaltfläche (Schaltfläche (MainWindow.xaml
):

Code: Select all







< /code>
Einstellen einer Referenz auf das Hauptfenster (MainWindow.xaml.cs
):

Code: Select all

public MainWindow()
{
// Set reference to main window in the application.
ReferenceClass.MainWindow = this;
}
Die editclipboardTextCommand Implementierung:

Code: Select all

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>
Die Befehlsbindung funktioniert vor dem Minimieren, funktioniert jedoch nicht mehr nach der Wiederherstellung der Systemschale. Andere UI -Elemente in der ListViewItem 
bleiben interaktiv. Es werden keine Fehler geworfen, aber das Klicken auf die Schaltfläche macht nichts.

Code: Select all

EditTextWindow
). Die Taste wird nach dem Wiederherstellen der Anwendung weiterhin korrekt eingestellt. < /li>
Stellen Sie sicher, dass die Befehlsbindung aktiv bleibt. /li>
Aktualisieren der ListView < /code>. < /li>
< /ul>
Was könnte dazu führen Wiederherstellen von der Systemschale? Wie kann ich sicherstellen, dass die Schaltfläche nach Wiederherstellung der Anwendung funktional bleibt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post