【问题标题】:How to put a default value in a textbox bound to int property wpf c#? [duplicate]如何在绑定到 int 属性 wpf c# 的文本框中放置默认值? [复制]
【发布时间】:2020-09-15 00:00:51
【问题描述】:

我是 xaml 的新手,在绑定到 int 属性的文本框时遇到了一些问题。

我的属性是这样定义的:

public Int32 MyInt
    {
        set
        {
            if(MyInt!= value)
            {
                _myInt = value;
                OnSpecificModification();
            }
        }
        get
        {
            return _myInt ;
        }
    }

    private Int32 _myInt = 100;

我的 xaml 中有一个 texbox 绑定到 MyInt,如下所示:

<TextBox PreviewTextInput="NumberValidationTextBox" x:Name="txtDocSteps" x:FieldModifier="private"  Text="{Binding Path=DocSteps, UpdateSourceTrigger=PropertyChanged}"/>

NumberValidationTextBox 是在文本框中只允许数字并且是:

private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
        e.Handled = regex.IsMatch(e.Text);
    }

当我在文本框中输入一个数字时一切正常,但当我清除它时,我收到一条错误消息“无法转换''值”。我明白为什么:因为 MyInt 不可为空。我不想要一个可为空的 int 因为我需要一个值。 当我移动到另一个字段或单击单击事件为的验证按钮时,我希望我的属性 (100) 中定义的值替换文本框中的空值:

private void ButtonValidate_Click(object sender, RoutedEventArgs e)
    {
        Plug.MyInt = int.Parse(txtDocSteps.Text);
        Plug.Description = txtUserDescription.Text;
        DialogResult = true;
    }

感谢您通过简单的解释帮助您了解如何操作。

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    尝试在绑定中添加TargetNullValue。在你的情况下,它应该是这样的

    <TextBox PreviewTextInput="NumberValidationTextBox" x:Name="txtDocSteps" x:FieldModifier="private"  Text="{Binding Path=DocSteps, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2012-06-23
      • 2016-02-12
      • 2023-04-05
      相关资源
      最近更新 更多