Keiner meiner Menüverknüpfungen arbeiten.Menü Tastenbelegungen arbeiten nicht
Ich habe ein wenig zu diesem Thema gelesen und entsprechend der Antwort here bedeutet es, dass ich Befehle anstelle von Klicks verwenden muss.
Hier wird die Menüstruktur ist:
- Ctrl + 0
- Strg +
- Ctrl:
<MenuItem x:Uid="MenuItem_10" Header="Zoom In" InputGestureText="CTRL +" Click="menuViewZoomInOutScaleFactor" Tag="25"> <MenuItem.InputBindings> <KeyBinding x:Uid="KeyBinding_7" Key="OemPlus" Modifiers="Ctrl" /> </MenuItem.InputBindings> </MenuItem> <MenuItem x:Uid="MenuItem_11" Header="Zoom Out" InputGestureText="CTRL -" Click="menuViewZoomInOutScaleFactor" Tag="-25"> <MenuItem.InputBindings> <KeyBinding x:Uid="KeyBinding_8" Key="OemMinus" Modifiers="Ctrl"/> </MenuItem.InputBindings> </MenuItem> <Separator x:Uid="Separator_7"/> <MenuItem x:Uid="MenuItem_12" Header="400%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=400}, Mode=OneWay}" Tag="400" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_13" Header="300%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=300}, Mode=OneWay}" Tag="300" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_14" Header="250%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=250}, Mode=OneWay}" Tag="250" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_15" Header="200%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=200}, Mode=OneWay}" Tag="200" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_16" Header="175%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=175}, Mode=OneWay}" Tag="175" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_17" Header="150%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=150}, Mode=OneWay}" Tag="150" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_18" Header="125%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=125}, Mode=OneWay}" Tag="125" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_19" Header="100%" IsCheckable="True" InputGestureText="CTRL + 0" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=100}, Mode=OneWay}" Tag="100" Click="menuViewZoomScaleFactor"> <MenuItem.InputBindings> <KeyBinding x:Uid="KeyBinding_9" Key="D0" Modifiers="Ctrl"/> </MenuItem.InputBindings> </MenuItem> <MenuItem x:Uid="MenuItem_20" Header="75%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=75}, Mode=OneWay}" Tag="75" Click="menuViewZoomScaleFactor"/> <MenuItem x:Uid="MenuItem_21" Header="50%" IsCheckable="True" IsChecked="{Binding Source={x:Static Properties:Settings.Default}, Path=ZoomFactor, Converter={ValueConverters:IsIntegerEqual To=50}, Mode=OneWay}" Tag="50" Click="menuViewZoomScaleFactor"/> <Separator x:Uid="Separator_8"/> <MenuItem x:Uid="MenuItem_22" Header="Custom..."/>
Wie Sie drei der Menüpunkte sehen können, shoudl mit in Verbindung gebracht werden -
ich konnte nicht fi nd diese spezifischen Buchstaben in der Liste Schlüssel und ließ sich für D0
, OemPlus
und OemMinus
. Entweder wird keine meiner Tastenbindungen tatsächlich verarbeitet. Warum?
Ich kann nicht sehen, wie ich verwenden, Klicks auf Befehle umwandeln kann. Bis jetzt wurden alle meine Befehle mit dem Ansichtsmodell verknüpft. Aber in diesem Fall muss der Befehl mit dem Code dahinter verknüpft werden.
Hier sind meine aktuellen Klick-Handler:
private void menuViewZoomScaleFactor(object sender, RoutedEventArgs e)
{
SetZoomFactor(Int32.Parse((String)((MenuItem)sender).Tag));
}
private void menuViewZoomInOutScaleFactor(object sender, RoutedEventArgs e)
{
int iStep = Int32.Parse((String)((MenuItem)sender).Tag);
if ((iStep == 25 && Settings.Default.ZoomFactor <= 375) ||
(iStep == -25 && Settings.Default.ZoomFactor >= 75))
{
SetZoomFactor(Settings.Default.ZoomFactor + iStep);
}
}
private void SetZoomFactor(int iZoomFactor)
{
Settings.Default.ZoomFactor = iZoomFactor;
IServiceProvider serviceProvider = myWorkbookView.Document as IServiceProvider;
Guid SID_SWebBrowserApp = new Guid("0002DF05-0000-0000-C000-000000000046");
Guid serviceGuid = SID_SWebBrowserApp;
Guid iid = typeof(SHDocVw.IWebBrowser2).GUID;
SHDocVw.IWebBrowser2 WebBrowser = (SHDocVw.IWebBrowser2)serviceProvider.QueryService(ref serviceGuid, ref iid);
WebBrowser.ExecWB(SHDocVw.OLECMDID.OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, Settings.Default.ZoomFactor);
}
Also muss ich meine Menü-Tastenbelegungen funktionelle erhalten.
Mögliche Duplikat [WPF: Wie Verwenden von Command & Eingabebindungen] (http://stackoverflow.com/questions/20794918/wpf-how-to-use-command- Eingabebindungen) –
Sie verwenden 'InputBindings' nicht korrekt. Überprüfen Sie die Antwort oben. –
@EliArbel Ich habe das gerade erst angesehen. Ich verstehe nicht, wie eine statische Klasse, die sich außerhalb des MainWindow-Codes hinter der Klasse befindet, für den Zugriff auf den Hauptfensterinhalt zuständig ist. –