不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

完善主體資料,免費贈送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
不卡视频在线观看_三级网站视频在线观看_91精品网站_国产综合一区二区

      9000px;">

          成人福利视频在线看| 免费人成网站在线观看欧美高清| 亚洲影视在线播放| av在线不卡电影| 国产欧美日韩综合精品一区二区 | 蜜臀va亚洲va欧美va天堂| 欧美挠脚心视频网站| 亚洲高清免费在线| 欧美三级中文字| 亚洲成a人v欧美综合天堂下载 | 久久久久久久综合日本| 国产一区三区三区| 久久久久久9999| av在线这里只有精品| 夜夜操天天操亚洲| 欧美一级专区免费大片| 捆绑变态av一区二区三区| 久久免费看少妇高潮| av一本久道久久综合久久鬼色| 亚洲天堂精品视频| 欧美亚洲综合久久| 久久疯狂做爰流白浆xx| 国产精品剧情在线亚洲| 一本久久综合亚洲鲁鲁五月天| 午夜精品123| 欧美精品一区二区三区蜜桃视频 | 欧美一二三在线| 国产一区二区在线电影| 亚洲日本在线视频观看| 在线电影国产精品| 国产成人aaa| 亚洲成人在线免费| www激情久久| 色妞www精品视频| 激情综合色综合久久| 国产精品久久久久影视| 欧美日韩一区小说| 国产成人av一区二区| 亚洲一区二区三区激情| 久久久综合网站| 欧美午夜视频网站| 国产宾馆实践打屁股91| 午夜欧美视频在线观看| 国产精品污www在线观看| 欧美群妇大交群中文字幕| 丰满白嫩尤物一区二区| 免费看欧美美女黄的网站| 亚洲欧美视频在线观看| 精品区一区二区| 欧美猛男gaygay网站| 成人网页在线观看| 国产自产高清不卡| 日韩精品久久理论片| 亚洲免费在线看| 欧美高清在线一区二区| 日韩色视频在线观看| 色综合久久88色综合天天6| 国产精品一区二区91| 青青草伊人久久| 亚洲尤物在线视频观看| 国产精品久99| 国产日产欧美一区| 欧美不卡激情三级在线观看| 欧美日韩一区二区三区在线| 99精品视频中文字幕| 国产美女精品在线| 久热成人在线视频| 日本va欧美va欧美va精品| 亚洲国产一区视频| 亚洲精品一二三| 亚洲免费观看高清| 中文字幕在线一区免费| 国产色一区二区| 久久影音资源网| 亚洲精品一线二线三线无人区| 欧美一二三四在线| 日韩欧美电影一区| 欧美一级黄色片| 日韩视频在线永久播放| 日韩视频一区二区在线观看| 欧美高清一级片在线| 欧美三级资源在线| 欧美人与z0zoxxxx视频| 91精品国产乱码久久蜜臀| 91精品国产入口在线| 91精品国产一区二区人妖| 欧美日韩视频在线第一区| 欧美日韩一区二区三区在线| 欧美日韩国产首页| 91精品国产欧美日韩| 欧美第一区第二区| 国产亚洲一本大道中文在线| 欧美极品aⅴ影院| 国产精品国产自产拍高清av| 欧美高清在线一区二区| 国产精品对白交换视频| 亚洲日穴在线视频| 亚洲人成电影网站色mp4| 一色屋精品亚洲香蕉网站| 亚洲免费看黄网站| 亚洲va中文字幕| 久久91精品国产91久久小草| 国产盗摄精品一区二区三区在线| 成人美女在线视频| 日本精品视频一区二区| 538在线一区二区精品国产| 日韩亚洲电影在线| 久久久久久久综合日本| 《视频一区视频二区| 偷拍日韩校园综合在线| 久久精品免费观看| 国产成人午夜视频| 91网上在线视频| 欧美一区二区精品久久911| 欧美变态凌虐bdsm| 欧美经典一区二区| 亚洲综合偷拍欧美一区色| 日韩av电影免费观看高清完整版| 奇米色777欧美一区二区| 国产a视频精品免费观看| 欧洲色大大久久| 日韩免费视频线观看| 国产精品乱码一区二三区小蝌蚪| 亚洲精品精品亚洲| 午夜伊人狠狠久久| 国产v日产∨综合v精品视频| 欧美中文字幕一区二区三区| 欧美不卡在线视频| 国产精品久久久一本精品| 日韩精品一级中文字幕精品视频免费观看| 裸体一区二区三区| 懂色av一区二区三区免费看| 色综合天天综合网国产成人综合天 | 精品日韩欧美一区二区| 中文字幕欧美一区| 久久精品99国产精品| 99久久精品国产精品久久| 欧美一区二区三区免费大片| 亚洲欧洲精品一区二区精品久久久| 视频精品一区二区| 91丨九色丨黑人外教| 2019国产精品| 日韩电影在线观看一区| 不卡大黄网站免费看| 欧美α欧美αv大片| 亚洲第一成年网| 风间由美一区二区av101| 欧美一级一区二区| 亚洲国产精品久久久久秋霞影院 | 成人晚上爱看视频| 日韩午夜精品电影| 亚洲成人av电影| 色综合久久六月婷婷中文字幕| 久久久久久麻豆| 久久电影网电视剧免费观看| 欧美色区777第一页| 一区视频在线播放| 成人免费看视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲r级在线视频| 在线观看免费一区| 亚洲欧美日韩久久| www.日韩在线| 日本一区二区三区dvd视频在线| 麻豆精品在线看| 欧美一级二级在线观看| 日韩国产欧美视频| 欧美男人的天堂一二区| 亚洲成人激情自拍| 欧美精品亚洲二区| 丝袜亚洲另类欧美综合| 在线观看日韩一区| 亚洲综合色成人| 欧美日韩在线免费视频| 亚洲成人先锋电影| 在线不卡中文字幕| 青青草原综合久久大伊人精品优势| 欧美日韩不卡一区| 亚洲第一主播视频| 欧美丰满一区二区免费视频| 亚洲国产成人porn| 777午夜精品视频在线播放| 日韩精品欧美精品| 日韩欧美一区在线| 久久精品理论片| 精品国内片67194| 国产成人自拍网| 中文字幕一区在线观看视频| 99riav一区二区三区| 亚洲特黄一级片| 欧美性生交片4| 奇米亚洲午夜久久精品| 久久综合狠狠综合久久综合88| 国产精品主播直播| 国产精品每日更新在线播放网址| 99久久久国产精品| 亚洲444eee在线观看| 日韩精品影音先锋| 福利电影一区二区三区| 一区二区国产视频|