Czy istnieje sposób na obsłużenie przycisku zamykania okna, np. "X" w prawym górnym rogu w modelu podglądu przez powiązanie z poleceniem? lub przesłonięcie polecenia window.close, aby zamknięcie jednego okna powróciło do poprzedniego okna. Thanx.Przycisk zamykania okna obsługi w WPF MVVM
18
A
Odpowiedz
30
Istnieje kilka metod. Podkreśliłem dwie metody poniżej.
Za pomocą dołączonych poleceń można powiązać przycisk zamykania w modelu widoku.
można użyć poniższy kod
Xaml:
<Window x:Class="WpfInfragisticsModal.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:ig="http://schemas.infragistics.com/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
Name="myWindow">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding CloseWindowCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Grid>
</Grid>
</Window>
UWAGA: Dodaj odniesienie System.Windows.Interactivity
Widok Model
To jest moja klasa RelayCommand.
public class RelayCommand : ICommand
{
/// <summary>
/// Initializes a new instance of the <see cref="RelayCommand"/> class.
/// </summary>
/// <param name="execute">The execute.</param>
public RelayCommand(Action<object> execute)
: this(execute, null)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="RelayCommand"/> class.
/// </summary>
/// <param name="execute">The execute.</param>
/// <param name="canExecute">The can execute.</param>
public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// Defines the method that determines whether the command can execute in its current state.
/// </summary>
/// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
/// <returns>
/// true if this command can be executed; otherwise, false.
/// </returns>
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute(parameter);
}
/// <summary>
/// Occurs when changes occur that affect whether or not the command should execute.
/// </summary>
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
/// <summary>
/// Defines the method to be called when the command is invoked.
/// </summary>
/// <param name="parameter">Data used by the command. If the command does not require data to be passed, this object can be set to null.</param>
public void Execute(object parameter)
{
_execute(parameter);
}
/// <summary>
/// Action
/// </summary>
private readonly Action<object> _execute;
/// <summary>
/// Predicate
/// </summary>
private readonly Predicate<object> _canExecute;
}
0
Problem polegał na tym, że zamykałem okno nadrzędne i ponownie otwierałem je po zamknięciu odpowiedniego okna podrzędnego, powodując wycieki pamięci. Rozwiązałem, ukrywając okno nadrzędne, a następnie pokazując je ponownie po zamknięciu okna podrzędnego. Jestem nowy w tworzeniu wpf i windowsów, więc uczę się jak idę.
Powiązane problemy
- 1. Wyłącz przycisk zamykania na pasku tytułu okna WPF (C#)
- 2. WPF - Ukryj przycisk minimalizacji okna
- 3. jak wywołać zdarzenie Loaded okna w WPF MVVM?
- 4. Jak utworzyć procedurę obsługi zamykania okna w Java Swing
- 5. Jak złapać zdarzenie przycisku zamykania okna (czerwony przycisk X w prawym górnym rogu okna) w formularzu wpf?
- 6. Powiązanie właściwości "WindowState" okna w WPF przy użyciu MVVM
- 7. Jak można "wyłączyć" przycisk w WPF przy użyciu wzorca MVVM?
- 8. jak obsługiwać zamykany przycisk okna w kakao
- 9. Sposoby implementacji dużego okna dialogowego ustawień z WPF i MVVM
- 10. MVVM Light & WPF - Wiązanie Wiele instancji okna do ViewModel
- 11. WPF MVVM anulować Window.Closing event
- 12. javascript na zdarzeniu zamykania okna
- 13. MVVM, WPF i walidacja
- 14. Nawigacja WPF Caliburn.Micro/mvvm
- 15. Lokalizacja zgodna z MVVM w aplikacjach WPF
- 16. Jak wyłączyć przycisk zamykania w C?
- 17. RaceOnRCWCleanup podczas zamykania aplikacji WPF
- 18. Przykład okna dialogowego WPV MVVM
- 19. WPF MVVM Używanie poleceń a obsługa zdarzeń
- 20. Komenda powiązania w WPF przy użyciu MVVM
- 21. Pobierz wybrany przycisk radiowy w grupie (WPF)
- 22. Ekran wykrzyknika w prawym górnym rogu okna - nad przyciskiem zamykania
- 23. Okna podrzędne Silverlight w wzorcu MVVM
- 24. Wyświetlenie okna komunikatu z ViewModel stanowi naruszenie MVVM - jak uniknąć?
- 25. Używanie PasswordBox z WPF - MVVM
- 26. WPF, MVVM, ICommand i repozytoria
- 27. WPF Pole widzenia MVVM na obciążenie
- 28. WPF MVVM Wybór tagu ComboBox
- 29. Usuń przycisk „OK” z okna słodki ostrzegania
- 30. kątowa 2 - wykonanie kodu podczas zamykania okna
Dokładnie tak, MVVM Light może pomóc! –
thanx haritha, próbowałem go, ale to nie działało dla mnie, nie mogłem znaleźć przestrzeni nazw system.windows.interactivity..używałem VS2010..Niektóre sugerowały 'windowsbase', ale nawet to nie działało, aby uzyskać xmlns: i = "http://schemas.microsoft.com/expression/2010/interactivity" do pracy ... –
Cześć Andris, Musisz zainstalować redystrybucyjną, aby pojawiła się w Visual Studio. Możesz go pobrać [tutaj] (http://www.microsoft.com/en-us/download/details.aspx?id=10801). – Haritha