【问题标题】:Changing format xxxxxxxxxx to xxx-xxx-xxxx将格式 xxxxxxxxxx 更改为 xxx-xxx-xxxx
【发布时间】:2015-07-15 15:08:38
【问题描述】:

我在 WPF 中有一个文本框,我需要以 xxx-xxx-xxxx 格式显示文本。

<TextBox FontSize="30" Text="{Binding MyString,UpdateSourceTrigger=PropertyChanged}" Grid.Row="3" MaxLength="10"></TextBox>

MyString 只是将 TextBox 中的值设置为其他逻辑的属性。我可以在 XAML 本身中使用 StringFormat 吗?

【问题讨论】:

  • 如果你只写xxx怎么样? xxxx 怎么样? xxxxxxx 怎么样?它允许空格吗?这是如何解释的?
  • xxx 只会这样。 xxxx 将是 xxx-x 并且 xxxxxxx 将是 xxx-xxx-x。它不允许空格

标签: c# wpf string xaml string-formatting


【解决方案1】:

您可以尝试使用MaskedTextBox 来指定输入的格式。

例子:

<wpfx:MaskedTextBox Mask="000-000-0000" />

也可以试试this tutorial

【讨论】:

  • 我不喜欢添加额外的 dll
【解决方案2】:

作为一个选项,您可以在后面的代码(或视图模型)中拆分文本并分别绑定每个值

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{0}-{1}-{2}">
            <Binding Path="FirstPart" />
            <Binding Path="SecondPart" />
            <Binding Path="ThirdPart" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

【讨论】:

  • @AliasVarghese 虽然它们只是绑定 - 您仍然可以将一个字符串作为支持字段并让 Parts 属性返回 MyString.Substring(.., ..)
【解决方案3】:

是的,您可以这样做。请尝试以下操作:

<TextBlock>
    <TextBlock.Text>
      <MultiBinding  StringFormat="{}{0}-whateverhercomes-andwhateverherecomes">
        <Binding Path="MyString"/>
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>

【讨论】:

  • 如何识别 MyString 的第 3 和第 6 位并在其中添加“-”?
  • 基本上我会坚持@kevchadders 的答案。这是我的增强型答案,我认为它更适用于您的情况。
猜你喜欢
  • 2013-03-19
  • 2012-11-20
  • 2014-03-01
  • 2020-10-18
  • 1970-01-01
  • 2017-10-25
  • 2016-06-04
  • 1970-01-01
  • 2021-01-01
相关资源
最近更新 更多