C# 文本合成事件和预览输出

C# 文本合成事件和预览输出,c#,wpf,C#,Wpf,我通过InputManager以编程方式将一些文本发送到TextBox,但在更改文本之前,它不会触发PreviewTemperate 带屏幕键盘的WPF应用程序。在某些情况下(输入货币等),文本在引入文本框之前需要验证 var target = TKeyboard.FocusedElement; var eventArgs = new TextCompositionEventArgs( Keyboard.PrimaryDevice,

我通过InputManager以编程方式将一些文本发送到TextBox,但在更改文本之前,它不会触发PreviewTemperate

带屏幕键盘的WPF应用程序。在某些情况下(输入货币等),文本在引入文本框之前需要验证

        var target = TKeyboard.FocusedElement;
        var eventArgs = new TextCompositionEventArgs(
            Keyboard.PrimaryDevice,
            new TextComposition(InputManager.Current, target, text))
        {
            RoutedEvent = UIElement.TextInputEvent
        };
        InputManager.Current.ProcessInput(eventArgs);

我需要以编程方式添加文本,并能够在输入文本框之前对其进行验证。也许这种方法不可能,我需要不同的方法?

如果
键盘。FocusedElement
返回正确的控件,然后将
事件参数的
源设置为
目标,并在
文本合成
对象中使用
UIElement.PreviewtdeputEvent

var target = Keyboard.FocusedElement;
var eventArgs = new TextCompositionEventArgs(
    Keyboard.PrimaryDevice,
    new TextComposition(InputManager.Current, target, text))
{
    RoutedEvent = UIElement.PreviewTextInputEvent //   <==Use another event
};
eventArgs.Source = target; //   <==Set the Source
InputManager.Current.ProcessInput(eventArgs);
var target=Keyboard.FocusedElement;
var eventArgs=new TextCompositionEventArgs(
键盘。主设备,
新文本合成(InputManager.Current、target、text))
{

RoutedEvent=UIElement.PreviewTestInputEvent//问题出在哪里?在
ProcessInput()
上没有触发事件或文本没有更改?使用TextCompositionEvent输入文本不会触发PreviewTestInput,因此在将其引入控件之前无法发送文本。请参阅我的答案,使用另一个事件。