C# 验证并获取文本框的值

C# 验证并获取文本框的值,c#,wpf,validation,xaml,C#,Wpf,Validation,Xaml,早上好 我正在处理wpf应用程序,我需要得到一个文本框的值,同时检查它是否为数字!我在网上查了图图和论坛,发现` private void NumberValidationTextBox(object sender, TextCompositionEventArgs e) { Regex regex = new Regex("[^0-9]+"); e.Handled = regex.IsMatch(e.Text); } 这是我的XAML代码中的代

早上好

我正在处理wpf应用程序,我需要得到一个文本框的值,同时检查它是否为数字!我在网上查了图图和论坛,发现`

private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("[^0-9]+");
        e.Handled = regex.IsMatch(e.Text);
    }
这是我的XAML代码中的代码

<TextBox x:Name="sb" Width="50" Height="20" PreviewTextInput="NumberValidationTextBox" />

但我看不出如何在该方法和我想从中获取值的对象(文本框)之间建立链接。我是否需要在XAML代码上使用proprety

我是否需要在XAML代码上使用proprety

实际上,如果使用MVVM模式,则需要在ViewModel中有一个属性

在ViewModel上实现属性后,确保通过实现INotifyPropertyChanged来提供通知功能。将属性绑定到TextBox的文本属性(双向,以便将视图中所做的更改传输到ViewModel,反之亦然),并将验证包含在属性的set方法中

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) //textbox1=your text box name
    {
        char ch = e.KeyChar;
        if (!Char.IsDigit(ch) && ch != 8)
        {
            e.Handled = true;
        }
    }

此代码不允许您输入除数值以外的任何内容

由于您使用的是
previewTimeput
事件,因此您可以从
e.text
获取新文本,并从引用引发事件的对象的
sender
参数(在本例中,您的
文本框
中)获取已输入的文本:


WPF不应该是事件驱动的。我强烈建议不要使用事件驱动的风格,即使它可能适用。你是什么意思事件驱动?我不使用MVVM模式,我该怎么办?看看MVVM并考虑使用它。这将使您的生活更轻松,应用程序更易于维护。我需要实现在MVVM上获得价值的适当性?是的。您可能想先看一些关于MVVM的教程或指南。没有MVVM还有其他方法吗?
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
    String newText = e.Text;
    TextBox textBox = (TextBox)sender;
    String existingText = textBox.Text;
    .......
    .......
}