在文本框值中添加括号

时间:2014-02-15 19:31:14

标签: c# wpf xaml mvvm textbox

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

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

3 个答案:

答案 0 :(得分:3)

  

我不想在逻辑或代码之外做到这一点

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

选项是

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

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

答案 1 :(得分:2)

如果没有任何自己的逻辑代码,我认为这是你想要的最接近的东西。

<TextBox x:Name="tbInput" />
<TextBlock Text="{Binding ElementName='tbInput', Path=Text, StringFormat={}({0})}" />

缺点是,如果()为空,您将始终看到空括号TextBox

答案 2 :(得分:0)

请参阅:String format using MultiBinding?

#accumulator# AAA
#accumulator# BBB
#accumulator# CCC
9