c# - 将括号添加到文本框值

标签 c# wpf xaml mvvm textbox

我想知道是否有这样的选项,当我在文本框中输入内容或拖动到任何内容(我正在使用 D&D 功能)时,上面的文本会自动插入括号。我不想在 ui 之外的逻辑或代码中这样做。这可能吗?

例如:如果我键入 AAA,我将在文本框中看到 (AAA)

最佳答案

I dont want to do that on the logic or in the code beyond

根据您的条件这是不可能的Something 必须捕获更改事件并将括号添加到文本中。如果没有代码隐藏中的逻辑,某些事情是不可能的。

选项是

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

这是#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}}" />

关于c# - 将括号添加到文本框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802525/

相关文章:

c# - 使用锁定语句

c# - 无法将类型 'System.Collections.Generic.List<System.Collections.Generic.IEnumerable<xxx>>' 隐式转换为 'System.Collections.Generic.List<xxx>

c# - 在 WPF 中构建自定义主题或使用标准主题

c# - 切换到其他应用程序时音频不播放

c# - 你如何在 C# .NET 中使用 'clone' WebControls?

c# - 在类和接口(interface)之间进行选择

c# - 实现 INotifyPropertyChanged 时,C# 中的 [NotifyPropertyChangedInvocator] 是什么?

.net - WPF 将多个控件绑定(bind)到不同的数据上下文

wpf - window.Owner(预期行为)

c# - 代码优化: Create a method for recurring procedures