将函数分配给 Texbox 中的 PreviewTextInput,保留 WPF 模式

问题描述 投票:0回答:1

我有一个名为 MechanicView.xaml 的窗口,其后端为 MechanicView.xaml.cs。 MechanicView.xaml 窗口通过 DataContext 连接到 MechanicViewModel.cs 文件。 MechanicView.xaml 窗口包含一个带有 PreviewTextInput 事件的 TextBox。如何将函数分配给 MechanicViewModel.cs 文件中的 PreviewTextInput 事件?我想保留 MVVM 模式,因此我想避免在 MechanicView.xaml.cs 文件中创建函数

c# wpf
1个回答
0
投票

有多种方法可以实现,这是一种方法

  1. 下载 Microsoft.Xaml.Behaviors.Wpf nuget 包到您的项目。
  2. xmlns:behaviours="http://schemas.microsoft.com/xaml/behaviors" 
    命名空间添加到 MechanicView.xaml。
  3. 在 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>
  1. 在 MechanicViewModel.cs 文件中,添加

    ICommand PreviewTextInputCommand
    变量

  2. 实现

    PreviewTextInputCommand
    变量如下

    PreviewTextInputCommand = new RelayCommand<object>(PreviewTextInput, (o) => { return true; });
  1. 命令方法如下
    private void PreviewTextInput(object parameter)
    {
        var p = (parameter?.GetType().Name);
    }
© www.soinside.com 2019 - 2024. All rights reserved.