You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过XAML为TextBox添加数字千位分隔符且不使用绑定与代码

可行实现方案

方案1:原生TextBox实现(无后台代码、无额外业务数据绑定)

你原有代码的问题是Binding未指定绑定源与路径,StringFormat仅在绑定到有效数值时才会生效。以下是仅XAML的配置方案,通过自绑定+失焦触发更新实现千位分隔,不需要额外定义ViewModel或后台逻辑:

<TextBox x:Name="text_main2" 
         VerticalAlignment="Top" 
         Width="303">
    <TextBox.Text>
        <Binding Path="Text" 
                 RelativeSource="{RelativeSource Self}" 
                 UpdateSourceTrigger="LostFocus" 
                 StringFormat="{}{0:N0}"/>
    </TextBox.Text>
</TextBox>

效果:输入数字时无格式干扰,失去焦点后自动转换为带千位分隔符的格式,支持任意长度的合法整数。

方案2:XCTK MaskedTextBox实现

你原有代码的问题是写死了固定长度的Mask属性,无法适配任意长度的数字。我们可以通过指定数值类型+格式化字符串的方式实现动态千位分隔,不需要写死Mask长度:

  1. 首先在你的页面根节点(Window/UserControl)头部引入系统命名空间:
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    
  2. 替换MaskedTextBox代码如下:
    <xctk:MaskedTextBox 
        ValueType="{x:Type sys:Int64}"
        FormatString="N0"
        PromptChar=" " 
        x:Name="txtname"  
        HorizontalContentAlignment="Right" 
        HorizontalAlignment="Left" 
        Height="22" 
        Margin="512,296,0,0" 
        TextWrapping="Wrap" 
        VerticalAlignment="Top" 
        Width="152"/>
    

效果:输入过程中会实时自动插入千位分隔符,体验更流畅。

两种方案都无需编写后台业务代码,仅通过XAML配置即可实现需求。

内容的提问来源于stack exchange,提问作者user14953869

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:42:03