2009-10-13 84 views
2

我在驗證WPF時遇到問題。
我有一個用戶控件,它有幾個文本框,它綁定到datamodel。
驗證通過IDataErrorInfo實現。在WPF中觸發數據驗證

我想驗證只在用戶按下「提交數據」按鈕時觸發,所以我用UpdateSourceTrigger="Explicit"與所有這些文本框的綁定。

一切工作正常,只有當用戶按下按鈕,我更新數據源時纔會觸發驗證。

但是,該用戶控件可以隱藏或顯示,並且當我將顯示的可見性從顯示/更改爲隱藏然後返回顯示時,觸發驗證。

有沒有一種方法來控制該階段的驗證?

+0

您能否提供實際更新數據源的代碼以及更改用戶控件可見性的XAML /代碼?可見性更改是否有可能無意中調用更新代碼? – rdeetz 2009-12-21 14:42:25

+0

「{Binding ElementName = _this,Path = SearchParameters.EnteredAddress,UpdateSourceTrigger = Explicit}」> – 2009-12-21 16:46:12

+0

您可以向我們展示按鈕的xaml嗎? – Phil 2010-01-03 20:26:35

回答

0

這是我使用

代碼正在執行驗證和搜索(這是相關點擊一個名爲按鈕的文本框

<TextBox 
     AutomationProperties.AutomationId="StreetNameTextBoxId" 
     Height="20" Margin="0,0,5,0" FontSize="12" Name="_streetNameText" 
     AcceptsReturn="False" AcceptsTab="False" Focusable="True" 
     Text="{Binding ElementName=_this, Path=SearchParameters.EnteredAddress, UpdateSourceTrigger=Explicit}"> 

代碼綁定「搜索」 )

private void ExecuteSearch() { 
     _streetNameText.UpdateDataSource(); 
     if (ViewModel.CustomerSpecification.IsValid()) 
      PerformActionInBackground(delegate{PerformSearch();}); 
    }