我有一个名为 MechanicView.xaml 的窗口,其后端为 MechanicView.xaml.cs。 MechanicView.xaml 窗口通过 DataContext 连接到 MechanicViewModel.cs 文件。 MechanicView.xaml 窗口包含一个带有 PreviewTextInput 事件的 TextBox。如何将函数分配给 MechanicViewModel.cs 文件中的 PreviewTextInput 事件?我想保留 MVVM 模式,因此我想避免在 MechanicView.xaml.cs 文件中创建函数
有多种方法可以实现,这是一种方法
xmlns:behaviours="http://schemas.microsoft.com/xaml/behaviors"
命名空间添加到 MechanicView.xaml。<TextBox Width="150">
<behaviours:Interaction.Triggers>
<behaviours:EventTrigger EventName="PreviewTextInput">
<behaviours:InvokeCommandAction Command="{Binding PreviewTextInputCommand}" PassEventArgsToCommand="True"/>
</behaviours:EventTrigger>
</behaviours:Interaction.Triggers>
</TextBox>
在 MechanicViewModel.cs 文件中,添加
ICommand PreviewTextInputCommand
变量
实现
PreviewTextInputCommand
变量如下
PreviewTextInputCommand = new RelayCommand<object>(PreviewTextInput, (o) => { return true; });
private void PreviewTextInput(object parameter)
{
var p = (parameter?.GetType().Name);
}