Ich habe eine WPF-Anwendung mit mehreren Fenstern. Ich möchte GLOBAL inputBindings definieren.XAML - Wie globale InputBindings haben?
Um lokale Eingabebindungen zu definieren, deklariere ich einfach die Eingabe in Window.InputBindings oder UserControl.InputBindings.
Globals zu definieren, ich wünsche, dass ich mit der Application-Klasse das gleiche tun könnte ...
<Application
....>
<Application.InputBindings>
...
</Application.InputBindings>
Wenn ich die gleiche Bindung in 2 verschiedenen Fenstern haben, ich habe es zweimal zu codieren. Dies entspricht nicht der Philosophie von D.R.Y. und ich denke, es gibt einen besseren Weg ...
EDIT: in seiner Antwort Kent Boogaart rät mir, Style zu verwenden. Leider kann ich nicht herausfinden, wie man es definiert. Dies ist der Code:
<Application.Resources>
<Style TargetType="Window">
<Setter Property="InputBindings">
<Setter.Value>
<Window.InputBindings>
<KeyBinding KeyGesture="Ctrl+M" Command="local:App.MsgCommand />
</Window.InputBindings>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
Es löst einen Fehler aus: Fehler MC3080: Die ‚Inputbindings‘ Property Setter kann nicht eingestellt werden, weil es keine zugängliche Set Accessor hat.
Ist mein Stil falsch? Gibt es eine andere Lösung?
Irgendwelche Ideen? Vielen Dank!
Vorsicht - ich einige sehr seltsame Probleme hatte, als den obigen Code verwenden. Es funktionierte großartig, bis ich es auf einen Stil anwandte, dann schien es in zufälligen Fällen zu funktionieren, aber dann wäre der DataContext null (also würde keiner der Befehle binden). Ich konnte nicht herausfinden, warum das zufällig passieren würde. – Asheh