【问题标题】:Add brackets to text box value将括号添加到文本框值
【发布时间】:2014-02-15 19:31:13
【问题描述】:

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

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

【问题讨论】:

  • 到目前为止你的代码是什么?在绑定属性的设置器中添加方括号是什么意思?
  • @KevinBrechbühl- 只是带有 D&D 事件处理程序的简单文本框,在设置器中执行它可能且简单,但我想避免它
  • XAML 并没有真正做逻辑。你为什么反对背后的代码?

标签: c# wpf xaml mvvm textbox


【解决方案1】:

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

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

选项是

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

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

【讨论】:

    【解决方案2】:

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

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

    不利的一面是,如果 TextBox 为空,您将始终看到空括号 ()

    【讨论】:

      【解决方案3】:

      见:String format using MultiBinding?

      <StackPanel>
        <Slider x:Name="sl1" Minimum="10" Maximum="100"/>
        <Slider x:Name="sl2" Minimum="10" Maximum="100"/>
        <Label x:Name="label13" Background="Yellow" Foreground="Black">
          <Label.Content>
              <TextBlock>
                <TextBlock.Text>
                  <MultiBinding StringFormat="{}{0} x {1} Test">
                    <Binding ElementName="sl1" Path="Value" />
                    <Binding ElementName="sl2" Path="Value" />
                  </MultiBinding>
                </TextBlock.Text>
              </TextBlock>
          </Label.Content>
        </Label>
      </StackPanel>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-29
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多