色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

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

下載app免費領取會員

NULL

ad.jpg

二次開發教程:WPF通過異常來驗證用戶輸入

發布于:2019-08-23 17:04:40

網友投稿

更多

在WPF中使用數據綁定,如果用戶輸入和綁定類型轉換失敗,控件就會顯示出現錯誤的模板,


比如一個Textbox綁定到一個int 屬性,如果用戶輸入一個string,那這個textbox就會顯示錯誤模板,一般會是在TextBox外顯示紅線,


當然這個模板也可以自己設置。那如果這個界面有一個確定Button,我想實現TextBox里輸入非數字和數字值小于0時Button都不可用,


那該怎么實現呢?




namespace WpfApplication6

{

    /// <summary>

    /// MainWindow.xaml 的交互邏輯

    /// </summary>

    public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            this.DataContext = new ViewModel(this);

        }

    }

    public class ViewModel : INotifyPropertyChanged

    {

        private Window win = null;

        private int errors = 0;

        private int num1 = 0;

        public int Num1

        {

            get

            {

                return num1;

            }

            set

            {

                num1 = value;

                if (num1 < 0)

                {

                    throw new ArgumentException("值太小!");

                }

            }

        }

        private int num2 = 0;

        public int Num2

        {

            get

            {

                return num2;

            }

            set

            {

                num2 = value;

                if (num2 > 0)

                {

                    throw new ArgumentException("值太大!");

                }

            }

        }

        public ICommand OK_Command

        {

            get

            {

                return new ReLayCommand(() => {



                },()=> {

                    return errors == 0;

                });

            }

        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnRaisePropertyChanged(string name)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(name));

            }

        }

        public ViewModel(Window win)

        {

            this.win = win;

            Validation.AddErrorHandler(win, ErrorHandler);

        }



        private void ErrorHandler(object sender, ValidationErrorEventArgs e)

        {

            if (e.Action == ValidationErrorEventAction.Added)

            {

                errors += 1;

            }

            if (e.Action == ValidationErrorEventAction.Removed)

            {

                errors -= 1;

            }

            OnRaisePropertyChanged("OK_Command");

        }

    }

    public class ReLayCommand : ICommand

    {

        private Action _execute = null;

        private Func<bool> _canExecute = null;

        public event EventHandler CanExecuteChanged;

        public ReLayCommand(Action _execute, Func<bool> _canExecute = null)

        {

            this._execute = _execute;

            this._canExecute = _canExecute;

        }

        public bool CanExecute(object parameter)

        {

            if (_canExecute != null)

                return _canExecute();

            return true;

        }

        public void Execute(object parameter)

        {

            if (_execute != null)

                _execute();

        }

    }

}


<Window x:Class="WpfApplication6.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:WpfApplication6"

        mc:Ignorable="d"

        Title="MainWindow" Height="350" Width="525">

    <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" HorizontalAlignment="Left" Height="23" Margin="140,76,0,0" TextWrapping="Wrap" Text="{Binding Path=Num1,UpdateSourceTrigger=PropertyChanged,NotifyOnValidationError=True,ValidatesOnExceptions=True}" VerticalAlignment="Top" Width="120"/>

        <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="140,160,0,0" TextWrapping="Wrap" Text="{Binding Path=Num2,UpdateSourceTrigger=PropertyChanged,NotifyOnValidationError=True,ValidatesOnExceptions=True}" VerticalAlignment="Top" Width="120"/>

        <Button x:Name="button" Command="{Binding Path=OK_Command}" Content="Button" HorizontalAlignment="Left" Margin="129,239,0,0" VerticalAlignment="Top" Width="75"/>

    </Grid>

</Window>

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

未標題-1.jpg

上一篇:二次開發教程:Revit開發之調用Revit命令的另一種方法

下一篇:二次開發教程:Revit開發之多線程

60acb4e0ef112.png
色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

    9000px;">

      免费成人av在线| 一区二区视频在线| 欧美男人的天堂一二区| 成人毛片老司机大片| 日本三级亚洲精品| 亚洲成人av福利| 亚洲一区二区三区四区在线| 国产a久久麻豆| 欧美男人的天堂一二区| 久久精品99国产精品日本| 午夜激情久久久| 一区二区三区欧美| 亚洲一区二区中文在线| 亚洲国产另类精品专区| 亚洲一区二区3| 日韩精品成人一区二区在线| 日日夜夜免费精品| 久久国产夜色精品鲁鲁99| 老汉av免费一区二区三区| 欧美aaaaa成人免费观看视频| 五月综合激情婷婷六月色窝| 午夜精品一区二区三区三上悠亚| 香蕉加勒比综合久久| 日韩高清不卡一区二区| 麻豆国产精品视频| 国模冰冰炮一区二区| 国产成人自拍网| 91婷婷韩国欧美一区二区| 欧美三区在线观看| 欧美成人三级电影在线| 久久久亚洲精品石原莉奈| 国产精品高潮久久久久无| 亚洲综合一区二区精品导航| 蜜臀av一区二区在线免费观看| 精品亚洲porn| 色综合久久中文字幕综合网| 日韩西西人体444www| 国产亚洲欧洲一区高清在线观看| 日韩一区欧美小说| 免费高清视频精品| va亚洲va日韩不卡在线观看| 欧美三级日本三级少妇99| 亚洲精品一区二区三区蜜桃下载| 中文字幕不卡在线播放| 亚洲国产精品精华液网站| 国产成a人亚洲精品| 欧美日韩成人激情| 国产精品欧美一区喷水| 三级不卡在线观看| 色综合久久久久综合体桃花网| 日韩一区二区在线观看视频播放| 国产精品久久精品日日| 麻豆精品精品国产自在97香蕉| 91视频在线看| 久久综合狠狠综合| 调教+趴+乳夹+国产+精品| 国产suv精品一区二区三区| 56国语精品自产拍在线观看| 国产精品网站一区| 久久国产乱子精品免费女| 欧美日韩国产精品自在自线| 国产精品乱子久久久久| 韩国欧美一区二区| 欧美日韩在线观看一区二区| 日韩一区在线看| 99天天综合性| 国产精品成人网| 国产不卡在线播放| 精品成人佐山爱一区二区| 天堂一区二区在线免费观看| 欧美综合一区二区三区| 亚洲女同ⅹxx女同tv| av电影在线观看一区| 国产日韩欧美一区二区三区综合| 老司机一区二区| 欧美美女视频在线观看| 亚洲国产成人av| 欧美日韩三级一区| 午夜伦理一区二区| 欧美日韩成人综合在线一区二区| 亚洲精品日韩一| 色狠狠一区二区| 夜夜亚洲天天久久| 欧美群妇大交群的观看方式| 亚洲一区二区偷拍精品| 欧美性猛片aaaaaaa做受| 一区二区三区精品在线观看| 色综合久久中文综合久久牛| 亚洲综合一区二区| 日韩一区二区电影| 国产乱码精品一区二区三区五月婷| 精品欧美黑人一区二区三区| 激情深爱一区二区| 中文字幕免费在线观看视频一区| 国产成人午夜高潮毛片| 国产精品免费久久| 色94色欧美sute亚洲线路一久 | 欧美性一二三区| 一区二区三区在线观看欧美| 欧美影片第一页| 日日摸夜夜添夜夜添亚洲女人| 日韩视频不卡中文| 国产福利精品导航| 亚洲另类中文字| 日韩欧美一区二区久久婷婷| 久久99国产精品免费| 中文字幕一区二区三区在线观看 | 精品一区二区三区免费视频| 欧美国产欧美综合| 欧美三级欧美一级| 激情偷乱视频一区二区三区| 国产精品国产三级国产| 欧美丝袜丝交足nylons图片| 国产在线精品一区二区不卡了| 国产精品久久久久久久久免费桃花 | 欧美日韩精品欧美日韩精品 | 国产偷国产偷亚洲高清人白洁| 99热在这里有精品免费| 日韩精品一二三四| 成人欧美一区二区三区视频网页| 欧美群妇大交群中文字幕| 成人网在线播放| 免费在线观看一区| 亚洲精品视频在线观看网站| 欧美精品一区二区三区高清aⅴ| 色综合色狠狠天天综合色| 经典三级视频一区| 亚洲最色的网站| 国产精品天天看| 精品国产一区二区三区不卡 | 欧美日韩精品系列| 91麻豆swag| 成人中文字幕电影| 免费在线看成人av| 亚洲一区二区三区小说| 国产精品日韩成人| 久久综合九色综合久久久精品综合| 在线精品视频免费观看| 不卡的av电影在线观看| 久久99日本精品| 日韩激情在线观看| 亚洲国产综合视频在线观看| 国产精品久久久久久久久免费丝袜| 日韩一区二区三| 欧美肥大bbwbbw高潮| 日本丰满少妇一区二区三区| 高潮精品一区videoshd| 久久se这里有精品| 美国十次了思思久久精品导航| 亚洲在线观看免费| 亚洲一区二区三区激情| 亚洲精品免费播放| 一区二区在线观看av| 一区二区三区四区激情| 一区二区三区日韩欧美| 亚洲欧洲精品天堂一级| 中文一区一区三区高中清不卡| 精品欧美一区二区在线观看| 日韩欧美第一区| 精品裸体舞一区二区三区| 精品国产髙清在线看国产毛片| 欧美一级久久久久久久大片| 日韩一区二区视频| 精品久久人人做人人爱| 欧美精品一区二区在线观看| 欧美精品一区二区三区高清aⅴ| 日韩欧美综合在线| 国产偷国产偷精品高清尤物| 亚洲人一二三区| 一级女性全黄久久生活片免费| 午夜精品福利在线| 免费美女久久99| 粉嫩av一区二区三区粉嫩| 色诱视频网站一区| 欧美日韩第一区日日骚| 亚洲精品一区二区三区福利| 国产精品高潮呻吟久久| 亚洲国产精品一区二区www在线| 日韩在线播放一区二区| 国产精品自在在线| 99精品欧美一区| 欧美日免费三级在线| 欧美电视剧在线看免费| 国产精品国产三级国产| 视频一区欧美日韩| 国产成a人亚洲精品| 欧美日韩亚洲综合| 久久免费视频色| 一区二区三区四区不卡在线| 激情图片小说一区| 欧美三日本三级三级在线播放| 欧美成人猛片aaaaaaa| 亚洲人成网站精品片在线观看| 久久精品久久精品| 91老师国产黑色丝袜在线| 欧美成人精品二区三区99精品| 国产精品欧美综合在线| 日韩av一区二区三区| 成人av中文字幕| 久久亚洲精品国产精品紫薇|