如何在MVVM中制作MouseOver事件?

Iva*_*an 2 wpf prism mvvm

我使用以下代码导航按钮单击:

XAML:

<Button x:Name ="Btn_Import" Grid.Row="33" Grid.Column="15" Grid.ColumnSpan="36" Grid.RowSpan="36" Command="{Binding NavigateCommand}"  CommandParameter="ViewImportProgress"/>
Run Code Online (Sandbox Code Playgroud)

视图模型:

public DelegateCommand<string> NavigateCommand { get; set; }

public MainButtonsViewModel(IRegionManager regionManager, IMainMenuTooltipViewer mainMenuTooltipViewer)
        {
            NavigateCommand = new DelegateCommand<string>(Navigate); 
        }

 private void Navigate(string uri)
        {
            regionManager.RequestNavigate("ScreenNavigationRegion", uri); 


        }
Run Code Online (Sandbox Code Playgroud)

它工作正常.现在我的问题是什么是相同的代码,使导航工作在MouseOver事件而不是MouseClick事件,当然在MVVM模式和使用棱镜?

小智 7

您可以使用相互作用

声明命名空间

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Run Code Online (Sandbox Code Playgroud)

你可以将命令绑定到事件

<Button Content="Navigate" >

    <i:Interaction.Triggers>

        <i:EventTrigger EventName="MouseEnter">

            <i:InvokeCommandAction Command="{Binding NavigateCommand}"   CommandParameter="ViewImportProgress"/>

        </i:EventTrigger>

    </i:Interaction.Triggers>

</Button>
Run Code Online (Sandbox Code Playgroud)