完善主體資料,免費贈送VIP會員!
      * 主體類型
      * 企業名稱
      * 信用代碼
      * 所在行業
      * 企業規模
      * 所在職位
      * 姓名
      * 所在行業
      * 學歷
      * 工作性質
      請先選擇行業
      您還可以選擇以下福利:
      行業福利,領完即止!

      下載app免費領取會員

      NULL

      ad.jpg

      二次開發教程:WPF 使用INotifyDataErrorInfo小例子

      發布于:2019-07-25 15:27:58

      網友投稿

      更多

      <Window x:Class="ErrorsTest.MainWindow"

              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

              xmlns:local="clr-namespace:ErrorsTest"

              mc:Ignorable="d"

              Title="MainWindow" Height="268.884" Width="411.588">    

          <Window.Resources>       

              <Style TargetType="TextBox">

                  <Style.Triggers>

                      <Trigger Property="Validation.HasError" Value="true">

                          <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self},Path=(Validation.Errors)[0].ErrorContent}"/>

                      </Trigger>

                  </Style.Triggers>

              </Style>

          </Window.Resources>

          <Grid>

              <TextBox x:Name="textBox" Text="{Binding Path= N,ValidatesOnNotifyDataErrors=True}"  

                       HorizontalAlignment="Left" Height="23" Margin="97,92,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" >

              </TextBox>

              <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="217,158,0,0" 

                      VerticalAlignment="Top" Width="75"/>

          </Grid>

      </Window>




          public partial class MainWindow : Window

          {

              public MainWindow()

              {

                  InitializeComponent();

                  this.DataContext = new ViewModel();

              }

          }


          public class ViewModel : INotifyDataErrorInfo,INotifyPropertyChanged

          {

              private Dictionary<string, List<string>> _errors = new Dictionary<string, List<string>>();

              private int n = 0;

              public int N

              {

                  get

                  {

                      return n;

                  }

                  set

                  {

                      List<string> te = new List<string>();

                      if(value<0)

                      {

                          te.Add("不能小于0!");

                      }

                      if(value%2!=0)

                      {

                          te.Add("不能位奇數!");

                      }

                      SetErrors("N", te);

                      n = value;

                  }

              }


              public bool HasErrors

              {

                  get

                  {

                      return _errors.Count != 0;

                  }

              }


              public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;

              public event PropertyChangedEventHandler PropertyChanged;

              private void RaiseNotifyPropertyChanged(string name)

              {

                  if(null!=PropertyChanged)

                  {

                      PropertyChanged(this, new PropertyChangedEventArgs(name));

                  }

              }

              private void SetErrors(string name,List<string> errors)

              {

                  if (errors.Count == 0)

                  {

                      errors.Remove(name);

                  }

                  else

                  {

                      if (_errors.ContainsKey(name))

                      {

                          _errors[name] = errors;

                      }

                      else

                      {

                          _errors.Add(name, errors);

                      }

                  }

                  RaiseErrorsChanged(name);

              }

              private void RaiseErrorsChanged(string name)

              {

                  if(ErrorsChanged!=null)

                  {

                      ErrorsChanged(this, new DataErrorsChangedEventArgs(name));

                  }

              }


              public IEnumerable GetErrors(string propertyName)

              {

                  return _errors[propertyName];

              }

          }

      本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

      未標題-1.jpg

      上一篇:二次開發教程:Revit開發自定義警告

      下一篇:二次開發教程:C#DynamicObject和ExpandoObject

      主站蜘蛛池模板: 奇米精品一区二区三区在| 久久久无码精品人妻一区 | 一级毛片完整版免费播放一区| 精品一区二区三区在线观看| 亚洲一区在线观看视频| 国产一区二区三区91| 能在线观看的一区二区三区| 毛片无码一区二区三区a片视频| 国产在线一区二区在线视频| 午夜精品一区二区三区在线观看| 在线观看精品一区| 国产成人综合一区精品| 亚洲福利电影一区二区?| 亚洲乱色熟女一区二区三区丝袜| 精品伦精品一区二区三区视频 | 国产在线乱子伦一区二区| 亚洲一区二区女搞男| 一区二区三区电影网| 国产精品综合一区二区三区| 亚洲一区二区三区高清| 日韩视频一区二区三区| 国产成人无码精品一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产麻豆媒一区一区二区三区| 国产福利91精品一区二区| 日韩免费无码视频一区二区三区| 国产午夜精品一区理论片| 久久精品道一区二区三区| 午夜福利av无码一区二区 | 一区二区在线观看视频| 日本不卡在线一区二区三区视频| 日本不卡在线一区二区三区视频 | 精品一区二区三区在线观看视频| 亚洲国产精品一区二区久久hs| 日本成人一区二区三区| 亚洲香蕉久久一区二区| 激情久久av一区av二区av三区| 精品国产一区二区三区av片| 色多多免费视频观看区一区| 91麻豆精品国产自产在线观看一区| 日本亚洲国产一区二区三区|