完善主體資料,免費(fèi)贈送VIP會員!
* 主體類型
* 企業(yè)名稱
* 信用代碼
* 所在行業(yè)
* 企業(yè)規(guī)模
* 所在職位
* 姓名
* 所在行業(yè)
* 學(xué)歷
* 工作性質(zhì)
請先選擇行業(yè)
您還可以選擇以下福利:
行業(yè)福利,領(lǐng)完即止!

下載app免費(fèi)領(lǐng)取會員

NULL

ad.jpg

二次開發(fā)教程:WPF 使用INotifyDataErrorInfo小例子

發(fā)布于:2019-07-25 15:27:58

網(wǎng)友投稿

更多

<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("不能位奇數(shù)!");

                }

                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];

        }

    }

本文版權(quán)歸腿腿教學(xué)網(wǎng)及原創(chuàng)作者所有,未經(jīng)授權(quán),謝絕轉(zhuǎn)載。

未標(biāo)題-1.jpg

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

下一篇:二次開發(fā)教程:C#DynamicObject和ExpandoObject

60acb4e0ef112.png