WPF中的基本验证和数据绑定 [英] Basic Validation and DataBinding in WPF
本文介绍了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屋!
查看全文