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

完善主體資料,免費贈送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;">

      亚洲精品写真福利| 欧美肥妇毛茸茸| 成人激情小说乱人伦| 在线看日韩精品电影| 日韩亚洲欧美高清| 亚洲国产成人tv| 成人一区二区三区在线观看| 欧美另类久久久品| 日韩一区日韩二区| 国产激情一区二区三区四区| 国产在线播精品第三| 欧美高清激情brazzers| 亚洲综合久久av| 日本伊人色综合网| 国产香蕉久久精品综合网| 亚洲色图在线播放| 国产白丝网站精品污在线入口| 7777精品伊人久久久大香线蕉经典版下载 | 在线看国产日韩| 亚洲综合视频在线观看| 日韩午夜三级在线| 成人毛片老司机大片| 爽好多水快深点欧美视频| 日韩三级视频在线观看| 99r国产精品| 国产成人免费网站| 久久精品国产在热久久| 亚洲欧美偷拍卡通变态| 精品国产乱码91久久久久久网站| 99精品视频在线播放观看| 日韩精品福利网| 亚洲一二三区不卡| 亚洲一区二区三区不卡国产欧美 | 国产999精品久久| 美国毛片一区二区| 日韩精品一卡二卡三卡四卡无卡| 中文字幕在线不卡一区二区三区| 国产日韩av一区| ●精品国产综合乱码久久久久| 欧美电视剧在线看免费| 制服丝袜亚洲网站| 成人精品国产福利| 久久99精品久久久久久动态图| 国产精品女上位| 国产精品国产自产拍在线| 97se亚洲国产综合在线| 国产成人8x视频一区二区| 精品一区二区三区视频| 麻豆一区二区三区| 秋霞国产午夜精品免费视频| 亚洲国产婷婷综合在线精品| 亚洲一卡二卡三卡四卡| 亚洲国产视频网站| 一区2区3区在线看| 日韩vs国产vs欧美| 久久国产麻豆精品| 国产麻豆日韩欧美久久| 欧美色网站导航| 欧美高清精品3d| 日韩一区二区三区视频| 精品成人在线观看| 亚洲人成在线观看一区二区| 日韩精品一区第一页| 国产精品 日产精品 欧美精品| 波多野洁衣一区| 精品免费一区二区三区| 日韩高清一级片| 91亚洲精品乱码久久久久久蜜桃| 欧美特级限制片免费在线观看| 3d动漫精品啪啪1区2区免费 | 久久99久久99| 欧美视频第二页| 中文字幕精品一区二区精品绿巨人| 亚洲天堂中文字幕| 欧美不卡123| 亚洲高清免费观看高清完整版在线观看| www国产成人免费观看视频 深夜成人网| 国产亚洲一区二区三区在线观看 | 国产一区二区三区美女| 欧美人动与zoxxxx乱| 亚洲欧洲精品一区二区三区| 日韩在线一区二区三区| 高清不卡在线观看av| 99国内精品久久| 日韩欧美国产综合在线一区二区三区| 一区二区三区在线播| 欧美精品一区二区三区高清aⅴ| 亚洲影视资源网| 91麻豆精品国产91久久久| 51精品秘密在线观看| 日本中文字幕一区二区视频| 欧美性受xxxx| 蜜桃精品视频在线| 久久精品人人做人人爽97| 丁香另类激情小说| 欧美va在线播放| 成人av在线资源网| 日韩欧美一区二区久久婷婷| 国产一区二区在线观看视频| 国产精品丝袜一区| 欧美欧美欧美欧美| 成人美女视频在线看| 香蕉久久一区二区不卡无毒影院 | 欧美国产国产综合| 欧美精品第一页| 国产伦精品一区二区三区免费迷| 色94色欧美sute亚洲13| 亚洲在线观看免费视频| 欧美精品一区二区三区蜜桃视频| av电影在线观看完整版一区二区| 亚洲精品成人在线| 久久久99精品久久| 国产美女精品一区二区三区| 成人欧美一区二区三区视频网页| 欧美日韩国产片| 91最新地址在线播放| 国产一区二区精品在线观看| 国产精品不卡在线观看| 日韩丝袜美女视频| 欧美日韩国产片| 欧洲精品中文字幕| 欧美三级资源在线| 9191精品国产综合久久久久久| 成人精品视频.| 91麻豆免费视频| 国产成人精品一区二| 成人中文字幕在线| 99久久伊人久久99| 欧美无乱码久久久免费午夜一区| 91丨九色丨蝌蚪富婆spa| 欧美日韩你懂的| 久久午夜免费电影| 国产精品久久久久久久久快鸭| 最好看的中文字幕久久| 国产欧美日韩中文久久| 亚洲欧洲在线观看av| 天天av天天翘天天综合网色鬼国产| 国产精品一品视频| 91小视频在线免费看| 欧美系列一区二区| 欧美乱熟臀69xxxxxx| 日韩欧美一区中文| 一区二区三区免费在线观看| 久久精品视频在线看| 一区二区三区四区高清精品免费观看 | 强制捆绑调教一区二区| 精品一区二区国语对白| 欧美午夜一区二区三区| 欧美成va人片在线观看| 国产精品美女久久久久av爽李琼| 欧美色图天堂网| 国产欧美日韩不卡免费| 亚洲一区二区视频在线观看| 毛片不卡一区二区| 91精品黄色片免费大全| 综合久久久久久| 国产**成人网毛片九色 | 久久亚洲二区三区| 日韩一区二区三区视频在线| 国产精品福利一区二区| 亚洲一线二线三线视频| 狠狠色综合播放一区二区| 色婷婷亚洲一区二区三区| 亚洲婷婷综合色高清在线| 国产精品一区二区91| 国产成人精品综合在线观看| 精品国产1区2区3区| 日韩黄色免费电影| 欧美成人欧美edvon| 久久综合视频网| 夫妻av一区二区| 亚洲激情网站免费观看| 欧美在线观看一区二区| 国产精品全国免费观看高清| 国产成人免费视频| 中文字幕永久在线不卡| 性欧美疯狂xxxxbbbb| 久久综合九色综合欧美亚洲| 成人午夜精品一区二区三区| 一区二区三区四区国产精品| 麻豆91精品91久久久的内涵| 久久久三级国产网站| 亚洲成a人片在线不卡一二三区| 国产精品免费视频观看| 99精品久久久久久| 一区二区高清视频在线观看| 成人免费福利片| 亚洲欧美日本韩国| 色就色 综合激情| 亚洲少妇中出一区| 99久久婷婷国产综合精品电影| 亚洲免费电影在线| 日韩精品乱码免费| 亚洲日本va在线观看| 久久综合九色综合久久久精品综合 | 日韩美女视频在线| 777午夜精品视频在线播放| 成人免费福利片| 91久久精品国产91性色tv | 成人一区二区三区在线观看|