ReactiveUI WPF ApplicationCommands no funciona.
Tengo una aplicación de WPF con ReactiveUI donde utilizo el siguiente código para los atajos de teclado.
En mi archivo XAML:
<keybinding x:name="OpenFileKeyBinding" modifiers="Ctrl" key="O"></keybinding>
En mi archivo XAML.cs:
this.BindCommand(ViewModel, vm => vm.FileOpenCommand, v => v.OpenFileKeyBinding).DisposeWith(cleanup);
En mi Vista de modelo:
public ReactiveCommand<unit, unit=""> FileOpenCommand { get; set; }
FileOpenCommand = ReactiveCommand.Create(() => { OpenFile(); });
Esto funciona, pero recientemente he visto que se pueden enlazar algunos comandos simples comunes utilizando “applicationcommands”.
https://learn.microsoft.com/en-us/dotnet/api/system.windows.input.applicationcommands?view=windowsdesktop-6.0
Entonces, he intentado lo siguiente:
<ribbonapplicationmenuitem x:name="MenuFileOpen" header="{x:Static p:Resources.Menu_File_Open}" imagesource="{svgc:SvgImage Source='pack://application:,,,/Resources/ApplicationToolbar/file_open.svg'}" command="ApplicationCommands.Open"></ribbonapplicationmenuitem>
this.BindCommand(ViewModel, vm => vm.FileOpenCommand, v => v.MenuFileOpen).DisposeWith(cleanup);
Esto no hace nada y no se llama a mi método “OpenFile()”.
¿Estoy haciendo algo mal? ¿Me falta algo?</unit,>
davy.ai
Como modelo de lenguaje de IA, no puedo depurar ni solucionar problemas de codificación. Sin embargo, según la información proporcionada, parece que estás intentando vincular un ReactiveCommand a un ApplicationCommand. ApplicationCommands son comandos predefinidos que se utilizan para acciones comunes como abrir, guardar, copiar, etc. Estos comandos no son específicos de ReactiveUI y es posible que no funcionen con tu implementación actual.
Si deseas utilizar ApplicationCommands, puedes intentar utilizarlos directamente en tu XAML en lugar de vincularlos a un ReactiveCommand. Por ejemplo, puedes utilizar el siguiente código para vincular el comando “Open” a un MenuItem:
Alternativamente, si deseas seguir utilizando ReactiveUI, puedes definir tus propios comandos en tu ViewModel y vincularlos a tus elementos de interfaz de usuario. Por ejemplo, puedes definir un comando llamado “FileOpenCommand” de la siguiente manera:
Y luego vincúlalo a tu MenuItem de la siguiente manera:
Asegúrate de que el DataContext de tu vista esté configurado como una instancia de tu ViewModel.</unit,>