0

我是 WPF 新手,我需要对我的三个 TextBoxes 进行验证。我尝试过但未能成功,请帮助我提供所需的代码。请建议我应该在哪里进行更改和更正以获得验证

这是我的 Xaml 代码

<Window x:Class="DataGrid_DataBinding.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="IDDATA" Height="350" Width="525">

<Label  Content="ID :" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="26" Width="27"/>
<Label  Content="Name :" HorizontalAlignment="Left" Margin="10,60,0,0" VerticalAlignment="Top" Height="26" Width="48"/>
<Label  Content="Salary :" HorizontalAlignment="Left" Margin="10,110,0,0" VerticalAlignment="Top" Height="26" Width="47"/>

<TextBox Name="tb1" HorizontalAlignment="Left" Height="20" Margin="60,10,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Id, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="100" />

<TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Name, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True}" VerticalAlignment="Top" Width="100"/>
<TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Salary, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True}" VerticalAlignment="Top" Width="100"/>

<Button Content="Get" HorizontalAlignment="Left" Margin="10,190,0,0" VerticalAlignment="Top" Width="75" Click="Get_Click" />
<Button Content="Add" HorizontalAlignment="Left" Margin="10,230,0,0" VerticalAlignment="Top" Width="75" Click="Add_Click" />
<Button Content="Delete" HorizontalAlignment="Left" Margin="10,270,0,0" VerticalAlignment="Top" Width="75" Click="Delete_Click" />

这是 .cs 代码

 public partial class MainWindow : Window
{

ObservableCollection<User> Users = new ObservableCollection<User>();
public MainWindow()
{
    InitializeComponent();

    Users.Add(new User() { Id = 101, Name = "allen", Salary = 10 });
    Users.Add(new User() { Id = 102, Name = "scott", Salary = 20 });
    Users.Add(new User() { Id = 103, Name = "mickey", Salary = 30 });
    Users.Add(new User() { Id = 104, Name = "micheal", Salary = 40 });
    Users.Add(new User() { Id = 105, Name = "fletch", Salary = 50 });
    Users.Add(new User() { Id = 106, Name = "etcher", Salary = 60 });

    dgsample.ItemsSource = Users;

}
private void DG1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    switch (e.Column.Header.ToString())
    {
        case "Id":

            e.Column.Visibility = Visibility.Hidden;
            break;
        case "Name":
            e.Column.Visibility = Visibility.Hidden;
            break;
        case "Salary":
            e.Column.Visibility = Visibility.Hidden;
            break;
    }
}

private void Get_Click(object sender, RoutedEventArgs e)
{


    int index;
    if (int.TryParse(this.tb1.Text, out index))
    {
        User currentUser = Users.FirstOrDefault(Select => Select.Id == int.Parse(tb1.Text));
        if (currentUser != null)
        {
            this.tb2.Text = currentUser.Name;
            this.tb3.Text = currentUser.Salary.ToString();
        }
        else
            MessageBox.Show("User with the provided ID does not Exist", "Error");
    }
    else
        MessageBox.Show("ID entered is not valid number", "Error");





}



private void Add_Click(object sender, RoutedEventArgs e)
{


    if (!tb1.Text.Equals(""))
    {
        var adduser = Users.Where(User => User.Id == int.Parse(tb1.Text));

        if (!adduser.Any())
        {
            Users.Add(new User() { Id = int.Parse(tb1.Text), Name = tb2.Text, Salary = int.Parse(tb3.Text) });
        }

        else

            MessageBox.Show("Someone already has that ID.");

    }

}

private void Delete_Click(object sender, RoutedEventArgs e)
{
    int index;
    if (int.TryParse(this.tb1.Text, out index))
    {
        User currentUser = Users.FirstOrDefault(Select => Select.Id == int.Parse(tb1.Text));
        if (currentUser != null)
        {
            Users.Remove(currentUser);
        }
        else
            MessageBox.Show("User with the provided ID does not Exist", "Error");
    }
    else
        MessageBox.Show("ID entered is not valid number", "Error");

}
4

1 回答 1

0

您在此处发布的WPF TextBox Validation C#似乎重复了相同的问题。

您是否尝试过我建议您解决的解决方案。这很简单,只需尝试复制并粘贴整个代码并运行它。我只添加了一个文本框来显示对用户输入数据的验证。您可以在应用程序中模拟相同的逻辑。

于 2013-10-24T07:03:40.527 回答