在文本框值中添加括号

mil*_*eyH 5 c# wpf xaml textbox mvvm

我想知道是否有选项,当我键入文本框或拖动到任何东西(我正在使用D&D功能)时,它上面的文本将自动插入括号.我不想在逻辑上或代码中超出ui那样做.那可能吗?

例如:如果我输入AAA,我会在文本框中看到(AAA).

Ωme*_*Man 3

我不想在逻辑或代码之外这样做

以你的条件是不可能的必须有东西捕获更改事件并将括号添加到文本中。如果没有代码隐藏中的逻辑,某些事情是不可能实现的。

选项有

  1. 订阅文本块的 SelectionChange 事件并添加括号。
  2. 创建一个自定义控件,它在内部执行#1,这样消费者就不必这样做。(从技术角度来说,它回答了你的问题)。
  3. 将文本块控件放在两个以括号作为上下文的标签之间。将它们的可见性绑定到虚拟机上的布尔值,该布尔值会报告文本块的绑定数据何时发生更改。如果有文本,则它们变得可见,如果没有文本,则隐藏。缺点是,只有在退出控件时,才会在用户键入时或在完全更改之前捕获到这一点。

这是#3

<Label Content="(" Visibility="{Binding HasText, Converter={StaticResource WindowsVisibilityBooleanConverter}}" />
<TextBox  Text="{Binding TextInput}"
            Height="18"
            HorizontalAlignment="Stretch" />
<Label Content=")" Visibility="{Binding HasText, Converter={StaticResource WindowsVisibilityBooleanConverter}}" />
Run Code Online (Sandbox Code Playgroud)