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

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

    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
    主站蜘蛛池模板: 亚洲a∨无码一区二区| 国产福利91精品一区二区| 国产av天堂一区二区三区| 夜夜嗨AV一区二区三区| 国模极品一区二区三区| 日韩精品国产一区| 精品国产一区二区三区麻豆| 在线精品亚洲一区二区三区 | 波多野结衣在线观看一区| 亚洲美女一区二区三区| 国产伦精品一区二区三区| 日韩精品无码Av一区二区| 日本片免费观看一区二区| 亚洲线精品一区二区三区影音先锋| 国产精品盗摄一区二区在线| 国产精品久久久久一区二区三区| 香蕉久久一区二区不卡无毒影院 | 人妻精品无码一区二区三区| 久久久久人妻一区二区三区vr| 亚洲乱色熟女一区二区三区丝袜 | 亚洲线精品一区二区三区影音先锋| 国产成人一区二区三区免费视频| 精品国产乱子伦一区二区三区 | 99偷拍视频精品一区二区| 2021国产精品视频一区| 亚洲一区二区三区香蕉| 国产成人无码一区二区三区在线| 好爽毛片一区二区三区四| 日本一道一区二区免费看| 色婷婷亚洲一区二区三区| 四虎在线观看一区二区| 色窝窝免费一区二区三区 | 一区二区精品在线观看| 日本美女一区二区三区| 一区二区精品视频| 久久精品视频一区二区三区| 国99精品无码一区二区三区| 亚洲综合无码一区二区| 日韩人妻一区二区三区免费 | 久久综合一区二区无码| 国产免费一区二区三区在线观看|