我想知道是否有这样的选项,当我在文本框中输入内容或拖动到任何内容(我正在使用 D&D 功能)时,上面的文本会自动插入括号。我不想在 ui 之外的逻辑或代码中这样做。这可能吗?
例如:如果我键入 AAA
,我将在文本框中看到 (AAA)
。
最佳答案
I dont want to do that on the logic or in the code beyond
根据您的条件这是不可能的。 Something 必须捕获更改事件并将括号添加到文本中。如果没有代码隐藏中的逻辑,某些事情是不可能的。
选项是
- 订阅文本 block 的 SelectionChange 事件并添加括号。
- 创建一个在内部执行 #1 的自定义控件,这样消费者就不必这样做了。 (从技术上讲,它回答了你的问题)。
- 将文本 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/