geladen wird, ist es möglich, einen Befehl zu feuern das Fenster zu benachrichtigen, wird geladen. Auch ich verwende keine MVVM Frameworks (Frameworks im Sinne Caliburn, Onxy, MVVM Toolkit usw.)wie ein Befehl ausgelöst, wenn ein Fenster in wpf
Antwort
Um Code hinter Ihrer Ansicht zu vermeiden , verwenden Sie die Interactivity-Bibliothek (System.Windows.Interactivity dll, die Sie kostenlos von Microsoft herunterladen können - kommt auch mit Expression Blend).
Dann können Sie ein Verhalten erstellen, die einen Befehl ausführt. Auf diese Weise ruft der Auslöser das Verhalten auf, das den Befehl aufruft.
<ia:Interaction.Triggers>
<ia:EventTrigger EventName="Loaded">
<custombehaviors:CommandAction Command="{Binding ShowMessage}" Parameter="I am loaded"/>
</ia:EventTrigger>
</ia:Interaction.Triggers>
Command (auch verwendet System.Windows.Interactivity) aussehen kann:
public class CommandAction : TriggerAction<UIElement>
{
public static DependencyProperty CommandProperty = DependencyProperty.Register("Command", typeof(ICommand), typeof(CommandAction), null);
public ICommand Command
{
get
{
return (ICommand)GetValue(CommandProperty);
}
set
{
SetValue(CommandProperty, value);
}
}
public static DependencyProperty ParameterProperty = DependencyProperty.Register("Parameter", typeof(object), typeof(CommandAction), null);
public object Parameter
{
get
{
return GetValue(ParameterProperty);
}
set
{
SetValue(ParameterProperty, value);
}
}
protected override void Invoke(object parameter)
{
Command.Execute(Parameter);
}
}
Ich habe gerade festgestellt, dass dieser Code für Silverlight ist. Wenn Sie den entsprechenden Trigger/Verhalten in WPF finden können, würde ich denken, dass die gleichen Prinzipale funktionieren sollten. – programatique
Statt Command scheint es dafür jetzt eine vorhandene Aktion zu sein, [InvokeCommandAction] (http://msdn.microsoft.com/en-us/library/system.windows.interactivity.invokecommandaction (Expression.40) aspx) – Patrick
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ApplicationCommands.New.Execute(null, targetElement);
// or this.CommandBindings[0].Command.Execute(null);
}
und XAML
Loaded="Window_Loaded"
Ich habe vergessen zu erwähnen, dass ich MVVM verwende. Wann wird ein Fenster geladen? Es sollte einen Befehl auslösen, den ich in meiner ViewModel-Klasse hören kann. –
MVVM ist keine Religion. Sie können eine Codezeile im CodeBehind hinzufügen und die Welt wird sich immer noch drehen. –
Sind Sie sicher! Bist du sicher, dass es weiter drehen wird? :) – GONeale
Eine generische Art und Weise Verhalten verwendet, wird bei AttachedCommandBehavior V2 aka ACB vorgeschlagen und unterstützt sogar mehrere Event-to-Befehlsbindungen,
Hier ist ein sehr einfaches Beispiel für die Verwendung:
<Window x:Class="Example.YourWindow"
xmlns:local="clr-namespace:AttachedCommandBehavior;assembly=AttachedCommandBehavior"
local:CommandBehavior.Event="Loaded"
local:CommandBehavior.Command="{Binding DoSomethingWhenWindowIsLoaded}"
local:CommandBehavior.CommandParameter="Some information"
/>
- 1. ein Fenster von einem anderen in Wpf
- 2. ein neues Fenster in WPF öffnet
- 3. Wie man ein WPF-Fenster reagiert
- 4. Minimieren Sie ein Fenster in WPF?
- 5. Wie ein Ereignis ausgelöst wird, wenn Datagrid geändert wurde
- 6. Wird ein Ereignis in C# ausgelöst, wenn ein Fenster wiederhergestellt wird?
- 7. Müssen ein Fenster in einem anderen Fenster unter WPF
- 8. Wie ein Ereignis ausgelöst wird, wenn DataGrid.ItemsSource geändert wird
- 9. WPF-Bildlaufleiste für ein veränderbares Fenster
- 10. Wie wird ein Fenster in WPF modal zu Seite gemacht?
- 11. ein Fenster in ein anderes Fenster Tropfen
- 12. WPF kann nur ein Fenster öffnen?
- 13. Wie erstellt man ein Template-Fenster in WPF?
- 14. Wie animiert man ein Fenster?
- 15. Der Befehl show() öffnet das Fenster WPF
- 16. Wie sende ich ein WPF-Fenster an die Rückseite?
- 17. Trigger-Versprechen, wenn ein Ereignis ausgelöst wird
- 18. Wie bringt man ein WPF-Fenster nach vorne?
- 19. Was passiert, wenn ein Ereignis ausgelöst wird
- 20. Woher weiß ich, ob ein WPF-Fenster geöffnet ist?
- 21. Wie ein anderes Fenster
- 22. Wie implementiere ich ein Chromeless-Fenster mit WPF?
- 23. WPF/XAML: Wie grösse ich ein Fenster ohne Rahmen?
- 24. Wie binden Sie einen Befehl an ein MenuItem (WPF)?
- 25. JAVAFX-Ereignis ausgelöst, wenn ein Kontrollkästchen aktiviert
- 26. Kann ich ein XAML/WPF-Fenster in ein zweites Fenster kopieren, z. B. ein Bild-im-Bild-Fernsehgerät?
- 27. WPF: Wie wird ein Fenster beim Debuggen aktualisiert?
- 28. Wie bekomme ich ein WPF-Fenster zum Aktualisieren?
- 29. WPF Fenster Location beendet
- 30. in Qt, Wie mache ich ein Fenster zum aktuellen Fenster?
Fast alle Ereignisse nicht abfeuern kann ein Befehl im ViewModel. Sie können nur die Tatsache akzeptieren und 1 Zeile Code in der Codebehind schreiben oder etwas obskures Muster, dass nach mehreren komplizierten Codezeilen das Gleiche tun implementieren. #dontbeapurist –
ich mit @EduardoMolteni nicht einverstanden sind. Wenn das Ereignis mit der Arbeit mit Daten zusammenhängt, müssen Sie mit der VM bei Code hinterher arbeiten, was sich leicht vermeiden lässt, wenn Sie Verhalten in WPF verwenden. – JoanComasFdz