不卡视频在线观看_三级网站视频在线观看_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人片一区二区| 国产激情精品久久久第一区二区| 欧美经典一区二区三区| 777亚洲妇女| 欧美在线短视频| 99国产精品视频免费观看| 国产一区二区三区蝌蚪| 免费成人在线观看| 精品午夜一区二区三区在线观看| 日本欧美一区二区三区| 日韩中文字幕不卡| 久久av资源网| 国产精品综合在线视频| 国产精品一二三四| 成人理论电影网| 一本久久综合亚洲鲁鲁五月天| 99re66热这里只有精品3直播| www.成人网.com| 91视频免费看| 在线观看成人免费视频| 欧美高清视频一二三区| 精品欧美乱码久久久久久1区2区 | 亚洲成人免费视频| 蜜臀av一区二区在线观看| 国产在线国偷精品产拍免费yy| 国产精品自拍毛片| 99久久99久久精品免费观看| 在线观看亚洲a| 欧美va亚洲va香蕉在线| 国产精品不卡在线观看| 亚洲第一电影网| 国产在线播精品第三| 成年人国产精品| 日韩一区二区三区电影在线观看| 欧美精品一区二区三区蜜臀| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品久久久久9999吃药| 亚洲成av人片| 成人丝袜18视频在线观看| 欧美日本不卡视频| 中文字幕永久在线不卡| 免费高清视频精品| 色综合一区二区| 国产偷v国产偷v亚洲高清| 午夜视频一区二区| 成人黄色在线视频| 欧美va天堂va视频va在线| 亚洲精品日日夜夜| 国产成人精品www牛牛影视| 欧美人狂配大交3d怪物一区| 国产精品情趣视频| 精品一区二区三区久久| 欧美私模裸体表演在线观看| 国产欧美一区二区精品性色超碰| 日韩国产欧美在线观看| 91蜜桃在线免费视频| 国产欧美精品一区二区色综合朱莉| 亚洲国产一区视频| 99re热这里只有精品视频| 久久久久久久久伊人| 首页欧美精品中文字幕| 91免费在线播放| 国产精品国模大尺度视频| 韩国在线一区二区| 91精品国产麻豆国产自产在线| 亚洲男人天堂av网| 91无套直看片红桃| 国产精品美女久久久久久久久| 精品一区二区三区的国产在线播放| 欧美丝袜自拍制服另类| 一级中文字幕一区二区| 色视频成人在线观看免| 亚洲欧美日韩成人高清在线一区| 成人久久18免费网站麻豆| 国产人久久人人人人爽| 国产一区二区影院| 国产日韩精品久久久| 国产福利不卡视频| 国产精品女同互慰在线看| www.在线欧美| 亚洲日本乱码在线观看| 一本大道久久a久久精二百| 自拍偷拍亚洲综合| 色婷婷综合久久久中文一区二区| 亚洲人成在线播放网站岛国| av资源站一区| 亚洲国产精品久久久男人的天堂| 欧美性猛交xxxxxx富婆| 蜜臀va亚洲va欧美va天堂| 精品久久久三级丝袜| av中文一区二区三区| 一二三区精品福利视频| 欧美精品乱码久久久久久| 久久97超碰色| 国产精品第一页第二页第三页| 色爱区综合激月婷婷| 午夜精品久久久久| 久久免费美女视频| 97se亚洲国产综合自在线不卡| 亚洲免费观看高清完整版在线观看熊 | 亚洲丰满少妇videoshd| 欧美一区二区大片| 国产福利一区二区三区在线视频| 亚洲国产精品av| 欧美性生活影院| 精品一区中文字幕| **欧美大码日韩| 日韩一区二区免费在线观看| 国产精品综合av一区二区国产馆| 国产精品欧美综合在线| 欧美午夜精品电影| 国产麻豆一精品一av一免费 | 国产酒店精品激情| 亚洲成av人综合在线观看| 久久久久久久久99精品| 在线一区二区视频| 国产精品白丝av| 亚洲线精品一区二区三区| 久久久亚洲国产美女国产盗摄| 99re这里只有精品视频首页| 青青草成人在线观看| 国产精品二区一区二区aⅴ污介绍| 欧美日韩美少妇| 波波电影院一区二区三区| 青青草国产精品97视觉盛宴| 国产精品网曝门| 欧美电影免费提供在线观看| 91官网在线观看| 国产成人丝袜美腿| 伦理电影国产精品| 午夜精品久久久久久不卡8050| 中文在线免费一区三区高中清不卡| 欧美日韩国产一级| 在线观看免费成人| 色婷婷av一区二区三区大白胸| 国产成人综合在线观看| 美女网站视频久久| 日本午夜一区二区| 一区二区三区成人在线视频| 国产精品久久久久久久久搜平片| www亚洲一区| 久久色在线视频| 26uuu成人网一区二区三区| 日韩欧美综合一区| 欧美精品电影在线播放| 在线观看欧美精品| 欧美日韩一区国产| 91麻豆6部合集magnet| 99久久99久久久精品齐齐| 不卡av电影在线播放| 99久久免费国产| 91免费视频观看| 色综合av在线| 色8久久人人97超碰香蕉987| 99久久久久免费精品国产 | 国产成人av电影在线观看| 韩国女主播一区| 九一九一国产精品| 国产乱码精品一区二区三区忘忧草| 久久国产综合精品| 韩国成人精品a∨在线观看| 麻豆精品蜜桃视频网站| 精东粉嫩av免费一区二区三区| 久久国产精品99精品国产| 韩国女主播一区二区三区| 国产精品一线二线三线精华| 成人毛片视频在线观看| 91丨九色丨蝌蚪丨老版| 91激情在线视频| 欧美精品乱码久久久久久按摩| 在线成人av影院| 久久精品亚洲一区二区三区浴池| 欧美韩国日本综合| 一区二区三区四区精品在线视频| 亚洲精品老司机| 免费成人在线影院| 成人做爰69片免费看网站| 欧美午夜一区二区三区 | 欧美日韩专区在线| 精品国产一二三区| 国产精品免费观看视频| 亚洲精品中文字幕乱码三区| 亚洲成av人片在线| 国产69精品久久久久777| 在线看国产一区二区| 精品福利一二区| 亚洲精品日韩综合观看成人91| 日本不卡一二三| www.色精品| 日韩免费福利电影在线观看| 中文字幕成人网| 美女视频第一区二区三区免费观看网站| 粉嫩av一区二区三区粉嫩| 777xxx欧美| 一区二区三区日韩精品| 国产伦理精品不卡| 欧美日本精品一区二区三区| 国产精品久久久久婷婷| 美女网站一区二区| 欧美视频在线观看一区二区|