1. 程式人生 > >WPF資料驗證(4)——響應與獲取驗證錯誤

WPF資料驗證(4)——響應與獲取驗證錯誤

前面的示例中,有關使用者接受到錯誤的唯一指示是在違反規則的文字框周圍的紅色輪廓。為了提供更多資訊,可以處理 Error 事件,但儲存或清除錯誤時會引發該事件,但前提是必須確保已將 Binding.NotifyOnValidationError 屬性設定為 True。

<Binding Path="UnitCost" NotifyOnValidationError="True">

Error 事件是一個使用冒泡策略的路由事件,所以可以通過在父容器中關聯事件處理程式為多個控制元件處理 Error 事件:
<StackPanel x:Name="stackProductDetails" Validation.Error="stackProductDetails_Error">

事件程式碼:
private void stackProductDetails_Error(object sender, ValidationErrorEventArgs e){
            if (e.Action == ValidationErrorEventAction.Added){
                MessageBox.Show(e.Error.ErrorContent.ToString());
            }
        }

在某些情況下,可能希望獲取當前視窗(或視窗中的給定容器)中所有未處理的列表。這項任務較簡單——就是遍歷元素樹,測試每個元素的 Validation.HasError 屬性。

下面程式碼演示了一個專門查詢 TextBox 物件中非法資料的示例:

private void GetErrors(StringBuilder sb, DependencyObject obj){
            foreach (object child in LogicalTreeHelper.GetChildren(obj)){
                TextBox element = child as TextBox;
                if (element == null) 
                    continue;
                if (Validation.GetHasError(element)){
                    sb.Append(element.Text + " has errors:\r\n");
                    foreach (ValidationError error in Validation.GetErrors(element)){
                        sb.Append(" " + error.ErrorContent.ToString());
                        sb.Append("\r\n");
                    }
                }
            }
        }

        private bool FromHasErrors(out string message){
            StringBuilder sb = new StringBuilder();
            GetErrors(sb, stackProductDetails);
            message = sb.ToString();
            return message != "";
        }

        private void cmdOK_Click(object sender, RoutedEventArgs e){
            string message;
            if (FromHasErrors(out message)){
                MessageBox.Show(message);
            }
            else{
                // ...
            }
        }
    }


相關推薦

WPF資料驗證4——響應獲取驗證錯誤

前面的示例中,有關使用者接受到錯誤的唯一指示是在違反規則的文字框周圍的紅色輪廓。為了提供更多資訊,可以處理 Error 事件,但儲存或清除錯誤時會引發該事件,但前提是必須確保已將 Binding.NotifyOnValidationError 屬性設定為 True。 <

資料導論4——OLTPOLAP、資料庫資料倉庫

公司內部的資料自下而上流動,同時完成資料到資訊、知識、洞察的轉化過程。 而企業內部資料,從日常OLTP流程中產生,實時儲存進不同的資料庫中。同時定期被提取、經格式轉化、清洗和載入(ETL),以統一的格式儲存進資料倉庫,以供決策者進行OLAP處理,並將處理結果視覺化。 OLTP & OLAP 企業

演算法資料結構4:堆排序

堆排序(HeapSort)是最常用的排序演算法之一。這種排序演算法同時具有插入排序和歸併排序的優點。與插入排序一樣,具有**空間原址性**,即**任何時候都只需要常數個額外的空間儲存臨時資料**(對此,請大家回想一下歸併排序,隨著問題規模的越大,需要的額外空間就越大,在解決大型問題時,這是不可接受的缺點)。與

Vue深度學習4-方法事件處理器

() 一個 span 修飾 語句 特殊變量 方法 left stop 方法處理器 可以用 v-on 指令監聽 DOM 事件: <div id="app"> <button v-on:click = "greet">Greet<

go語言學習筆記4--容器字符串的基本概念

都是 empty 知識 nil 來講 java nbsp unicode ... 一、 Slice(切片) package main import ( "fmt" ) //切片,slice func main() { arr := [...]int{1,2,

Java並發4- synchronizedCAS

線程 static ima bubuko nts 就是 incr 獲取 阻塞 引言 上一篇文章中我們說過,volatile通過lock指令保證了可見性、有序性以及“部分”原子性。但在大部分並發問題中,都需要保證操作的原子性,volatile並不具有該功能,這時就需要通過其他

mongodb基礎4備份恢復

pro oss col mon 圖片 備份 cto ffffff 技術 1、備份2、恢復mongodb基礎(4)備份與恢復

CCNA學習指南4iOS記憶體

(1)Cisco iOS Cisco iOS軟體是思科裝置的系統軟體。 Cisco iOS軟體提供的服務通常使用CLI進行訪問。通過控制檯連線、調變解調器連線(路由器?)Telnet或secure shell(SSH)會話訪問CLI。 無論採用哪種連線方法,對Cisco iOS CLI的訪問一般稱為exe

CCNA學習指南4iOS內存

erase mark 操作 文件服務 包括 如果 ssh exec 管理員 (1)Cisco iOS Cisco iOS軟件是思科設備的系統軟件。 Cisco iOS軟件提供的服務通常使用CLI進行訪問。通過控制臺連接、調制解調器連接(路由器?)Telnet或secure

資料入門4hdfs的shell語法

1、測試hdfs檔案上傳和下載(HDFS shell)     1.0檢視幫助         hadoop fs -help <cmd>     1.1上傳 &n

資料4Hadoop生態系統體系架構及基本概念

一、基本概念 機架:HDFS叢集,由分佈在多個機架上的大量DataNode組成,不同機架之間節點通過交換機通訊,HDFS通過機架感知策略,使NameNode能夠確定每個DataNode所屬的機架ID,使用副本存放策略,來改進資料的可靠性、可用性和網路頻寬的利用率。 資料塊(blo

長短期記憶LSTM系列_LSTM的資料準備4——如何歸一化標準化長短期記憶網路的資料

導讀: 在訓練神經網路(例如長短期記憶復現神經網路)時,可能需要縮放序列預測問題的資料。 當輸入資料序列分佈並不標準,或者變化幅度(標準差)過大時,這會減慢網路的學習和收斂速度,也會阻礙網路的學習效率。 因此您需要了解如何歸一化和標準化序列預測資料,以及如何確定將哪中形式用於輸入和輸出變

4DockerfileDocker私有倉庫

目錄: 1、Dockerfile 1.1、什麼是Dockerfile 1.2、常用命令 1.3、使用指令碼建立映象 2、Docker私有倉庫 2.1、私有倉庫搭建與配置 2.2、映象上傳至私有倉庫 1、Dockerfile 1.1、什麼是Dockerfile

week24vivim編輯器

一、vi 與vim 1.所有的 Unix Like 系統都會內建 vi 文字編輯器,其他的文字編輯器則不一定會存在;很多個別軟體的編輯介面都會主動呼叫 vi (例如未來會談到的crontab, visudo, edquota 等指令);vim 具有程式編輯的能力

資料4Hadoop生態系統體系架構彙總

一、基本概念 機架:HDFS叢集,由分佈在多個機架上的大量DataNode組成,不同機架之間節點通過交換機通訊,HDFS通過機架感知策略,使NameNode能夠確定每個DataNode所屬的機架ID,使用副本存放策略,來改進資料的可靠性、可用性和網路頻寬的利用率

Python資料型別4 字串

字串 字串(string)是一種不可變的序列物件。字串常量用引號定義,可以是單引號,雙引號,三引號,這三者沒有任何區別,但要成對使用。 字串的建立 >>> 'xyz' #單引號定義 'xyz' >>> "xyz"

資料求索4:配置Spark History Server

大資料求索(4):配置Spark History Server 修改配置檔案 修改conf/spark-default.conf cp spark-default.conf.template spark-default.conf vim spark-defau

4.4Python資料型別4之字串函式

返回總目錄 目錄: 1.字串的查詢計算 2.字串的轉換 3.字串的填充壓縮 4.字串的分割拼接 5.字串的判定 (一)字串的查詢計算 (1)len(str)計算字串的總數 (2)find()與rfind()查詢字元所在的索引 (3)index()與rindex()查詢

mahout之推薦系統原始碼筆記4 ---總結優化

mahout之推薦系統原始碼筆記(4) —總結與優化 花了幾天的時間閱讀分析了mahout推薦系統中基於java單機和基於hadoop的分散式mapreduce原始碼。根據其推薦系統hadoop程式的job劃分寫了筆記1、2、3。在這裡,基於筆記1,2,3做一

WPF學習筆記4獲取DATAGRIDTEMPLATECOLUMN模板定義的內容控制元件

在之前的DataGrid的DATAGRIDTEMPLATECOLUMN列中,自定義了一個TextBox控制元件,但是在C#程式碼中提示找不到這個控制元件,導致無法對該控制元件進行操作。在網上搜索後,發現一些處理方法比較繁瑣,下面這個方法最簡便。 xaml格式描述: 1 <DataGrid N