Suchergebnisse
Suchergebnisse 1-22 von insgesamt 22.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
-
Gebunden wird an Properties im DataContext, also (hoffentlich) deinem ViewModel, nicht an Properties anderer Controls. Leg in deinem ViewModel eine neue Propertie vom Typ Timespan an, implementiere INotifyPropertyChanged korrekt dafür und binde dann das MediaElement und die TrackBar mit Mode=TwoWay daran.
-
Das ist soweit richtig, du solltest dein ViewModell aber noch als Singletone implementieren, etwa so: C#-Quellcode (12 Zeilen) Dann musst du das ViewModel als DataContext für das Window festlegen (damit wird dann automatisch der DataContext für alle Controls gesetzt): XML-Quellcode (1 Zeile) local ist der Namespace deiner Anwendung, in dem sich u.a. das ViewModel befindet. Wenn du jetzt Bindings setzt wird dir der Editor die Properties des ViewModels als Path anbieten.
-
Naja ich hab ja gesagt, was jetzt zu tun ist. Jegliche Logik muss ins ViewModel wandern, im Codebehind des MainWindows darf nur Code stehen, der alleine das View betrifft. Sachen wie Start und Stop, die du wahrscheinlich auch haben möchstest, werden in Form von Commands, die ebenfalls das ViewModel bereitstellt, an die entsprechenden Controls gebunden, Events kommen hier nicht zum Einsatz. Dort kannst du dann alles tun, was du möchtest, unter anderem auch die entsprechenden Aktionen an der Audio…
-
Das wird etwas komplizierter. Du musst mehrere Commands mit einem Button ausführen, dafür muss du Commands gruppieren können: codeproject.com/Articles/25808…ommands-with-CommandGroup Der zweite Command wäre dann aber kein RelayCommand, sondern ein RoutedCommand, das per CommandBinding an das MediaElement geleitet wird. Da ist es dann ganz praktisch, dass du sowieso schon ne neue Klasse dafür hast.
-
1. Schwer zu sagen. Ich könnte mir vorstellen, dass es etwas mit der Reihenfolge der Commands in den Groups zu tun hat oder auch mit der Reihenfolge, in der der Commandmanager die Commandbindings und die RelayCommands updatet. Da musst du mal etwas rumprobieren. 2. Du hast doch Value an eine Property im ViewModel gebunden. Wenn also die Sliderposition geändert wird, wird der Setter dieser Property aufgerufen.
-
Kann ich mir vorstellen. Liegt daran, dass das Mediaelement durchgehend die Position verändert und dann quasi ein endloser Strom an Positionsneusetzungen an die Audiosource kommt. Da müsstest du gegebenenfalls für das Mediaelement und den Slider zwei verschiedenen Properties anlegen und zwischen denen so delegieren, dass die Position der Audiosource nur gesetzt wird, wenn die Änderung vom SLider aus kommt, nicht vom Mediaelement.
-
Du bindest Slider.Value an eine Property und MediaElement.Position an eine andere. Die Position der Audiosource wird nur gesetzt, wenn sich die Property, an die der Slider gebunden ist, geändert wird. Dann musst du nur noch bei Änderung der einen Property die andere setzen, allerdings über das Backingfield, nicht über den Setter, weil ansonsten eine Endlosschleife ausgeführt wird. Nicht vergessen, dann auch PropertyChanged für die jeweils andere Property aufzurufen.