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

完善主體資料,免費贈送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
色女孩综合网_天天做天天添婷婷我也去 _日韩视频高清_草草影院免费

    久久久久久久综合狠狠综合| 久久亚洲一区二区三区四区| 久久亚洲影院| 一区二区三区高清在线观看| 另类图片国产| 亚洲精品乱码久久久久久蜜桃麻豆| 久久理论片午夜琪琪电影网| 国内自拍亚洲| 欧美福利一区| 亚洲天堂免费观看| 国产亚洲精品7777| 久久免费视频在线| 在线日韩av永久免费观看| 久久免费视频这里只有精品| 亚洲欧洲在线免费| 另类天堂av| 亚洲第一页在线| 久久综合国产精品| 日韩视频在线免费观看| 国产精品青草综合久久久久99| 久久一区精品| 亚洲一区二区三区午夜| 国内外成人在线| 欧美乱大交xxxxx| 亚洲免费在线电影| 精品二区视频| 国产精品激情偷乱一区二区∴| 久久夜色精品国产欧美乱| 亚洲美女中出| 韩日欧美一区| 国产精品成人aaaaa网站| 看片网站欧美日韩| 亚洲欧美日韩国产成人| 亚洲国产日韩精品| 国产亚洲欧美日韩精品| 欧美国产亚洲视频| 羞羞答答国产精品www一本| 亚洲夫妻自拍| 国内精品**久久毛片app| 欧美三级韩国三级日本三斤| 久久久99精品免费观看不卡| 亚洲一二三区在线观看| 亚洲精品国精品久久99热一| 狠狠干成人综合网| 国产精品国产三级国产a| 老司机午夜精品| 久久精品中文字幕一区| 亚洲一区二区在线免费观看| 亚洲国产精品传媒在线观看 | 极品尤物一区二区三区| 欧美激情一区在线观看| 久久久久中文| 久久国产精品一区二区| 欧美亚洲色图校园春色| 亚洲伊人观看| 亚洲婷婷在线| 亚洲国产欧美精品| 国内精品视频久久| 国产欧美激情| 国产精品视频网站| 国产精品国产三级国产aⅴ9色| 欧美日韩精品三区| 欧美日韩国产成人高清视频| 欧美激情中文不卡| 欧美好吊妞视频| 欧美大色视频| 欧美日韩高清在线观看| 欧美激情91| 欧美日韩国产精品一区| 欧美成人一二三| 亚洲精品久久久久久久久久久久| 亚洲高清不卡av| 亚洲欧洲中文日韩久久av乱码| 有坂深雪在线一区| 亚洲第一精品福利| 国内精品久久久久久久果冻传媒| 国产精品美女久久久久av超清 | 亚洲一区亚洲二区| 亚洲综合成人在线| 亚洲欧美精品一区| 欧美在线1区| 欧美一区二区国产| 亚洲最黄网站| 亚洲午夜精品国产| 一区二区三区高清在线| 亚洲欧美怡红院| 久久九九久精品国产免费直播| 久久精品2019中文字幕| 久久综合给合| 欧美日韩国产不卡在线看| 欧美日韩另类在线| 国产精品狼人久久影院观看方式| 国产欧美一区二区白浆黑人| 国外视频精品毛片| 亚洲国产精品专区久久| 一片黄亚洲嫩模| 亚洲日本久久| 在线亚洲成人| 欧美一区二区三区视频免费播放| 性xx色xx综合久久久xx| 亚洲欧美日产图| 久热精品视频在线免费观看| 农村妇女精品| 国产精品久久久久久久久免费桃花| 国产精品一区二区黑丝| 亚洲第一精品影视| 在线亚洲激情| 欧美亚洲日本网站| 欧美福利一区二区| 国产精品美女久久久| 国外成人在线视频| 亚洲伦理自拍| 午夜在线成人av| 久久av红桃一区二区小说| 久久九九免费| 国产精品久久久久久久久动漫| 国产自产女人91一区在线观看| 极品中文字幕一区| av成人老司机| 久久黄色小说| 欧美精品一区三区| 国内欧美视频一区二区| 一区二区免费在线观看| 亚洲综合日韩在线| 久久嫩草精品久久久久| 欧美日韩亚洲精品内裤| 伊人成人在线视频| 中文日韩在线视频| 久久久国产午夜精品| 国产精品盗摄久久久| 国产日韩欧美一区二区三区在线观看| 亚洲精品视频免费| 欧美va亚洲va香蕉在线| 国产午夜亚洲精品不卡| 一本久久青青| 欧美激情综合在线| 一区二区三区中文在线观看| 亚洲欧美成人网| 欧美成人免费va影院高清| 国产欧美视频一区二区三区| 一区二区国产在线观看| 久久伊人精品天天| 国产亚洲综合性久久久影院| 99精品欧美一区二区蜜桃免费| 久久国产天堂福利天堂| 国产精品你懂得| 亚洲国产专区| 蜜桃久久av一区| 亚洲福利视频网站| 久久精品人人做人人爽| 国产精品福利在线观看| 日韩西西人体444www| 欧美高清视频在线| 在线播放日韩专区| 男男成人高潮片免费网站| 伊大人香蕉综合8在线视| 久久久精品国产99久久精品芒果| 欧美日韩一区三区| 亚洲另类春色国产| 欧美日韩国产一区二区三区地区 | 在线一区二区三区做爰视频网站| 老司机精品视频一区二区三区| 精品白丝av| 裸体歌舞表演一区二区| 在线观看亚洲视频| 欧美激情欧美狂野欧美精品| 日韩视频免费观看| 欧美三级视频在线| 亚洲一区二区在线看| 国产精品久久久久国产精品日日| 亚洲一区二区三区四区在线观看| 欧美区一区二区三区| 日韩视频免费在线观看| 欧美日本久久| 99在线热播精品免费| 国产精品高清在线观看| 欧美一级午夜免费电影| 韩日视频一区| 欧美极品aⅴ影院| 亚洲免费观看高清完整版在线观看熊 | 久久国产一区| 亚洲日本视频| 欧美激情一级片一区二区| 夜夜狂射影院欧美极品| 欧美日韩国产电影| 香蕉久久精品日日躁夜夜躁| 国产一区二区三区高清播放| 久久综合五月| 99视频精品全部免费在线| 国产精品日日摸夜夜摸av| 久久精品一区四区| 亚洲区免费影片| 国产欧美亚洲日本| 欧美/亚洲一区| 中文在线资源观看视频网站免费不卡| 国产欧美日本在线| 免费成年人欧美视频| 亚洲一区二区三区四区中文| 国产自产精品| 欧美日韩中文精品|