WPF中的基本验证和数据绑定 [英] Basic Validation and DataBinding in WPF

查看:64
本文介绍了WPF中的基本验证和数据绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的窗口中有3个TextBox。当我在TextBoxes中输入错误的字符时,它应该通过验证显示错误。我在WPF中这样做,请帮我代码



这是我的XAML代码



I have 3 TextBoxes in my window.When i enter wrong charecters into the TextBoxes ,It should show error by using validations.I'm doing this in WPF, please help me with the code

This is my XAML code

<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">

<Grid>
    <DataGrid AutoGeneratingColumn="DG1_AutoGeneratingColumn" Name="dgsample" BorderBrush="Black" BorderThickness="2" AutoGenerateColumns="True" CanUserAddRows="True" CanUserDeleteRows="True" CanUserSortColumns="False"  Margin="200,10,10,75">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Id" Visibility="Hidden" Binding="{Binding Path=Id}"  />
            <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"  />
            <DataGridTextColumn Header="Salary" Binding="{Binding Path=Salary}"  />
        </DataGrid.Columns>
    </DataGrid>

    <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" />
</Grid>





这是.cs代码





This is .cs Code

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");

    }

}

推荐答案

我在代码中找到了这个简单的方法背后。请查看此处 [ ^ ]。
I find this easyer to do in code behind. Look here[^].


这篇关于WPF中的基本验证和数据绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆