2011-07-29 104 views
1

我有一個綁定到視圖模型的用戶控件,我使用IDataErrorInfo進行驗證,在驗證錯誤的情況下使用默認的紅色邊框指示。IDataErrorInfo紅色邊框和TabItem控件

這裏是我的控制之一:

<TextBox Text="{Binding Path=Code, ValidatesOnDataErrors=True}"></TextBox> 

一切正常,並在初始化過程中有驗證錯誤的所有控件都這個紅色邊框可見。除了TabItem控件內的控件之外的所有控件在初始化期間都不可見(未選中)。這些控件不顯示紅色邊框,雖然驗證也可以正常運行。

我隔離了這個問題,並且清楚的是紅色邊框沒有出現,因爲控件在用戶控件的初始佈局中不可見。

我的問題是我錯過了什麼,如果沒有,那麼我如何手動強制驗證用戶控件中的所有控件再次運行,以至少在TabControl.SelectionChanged期間顯示紅色邊框?

預先感謝您。

回答

2

我發現

我創建哪裏,只要控制的IsVisible屬性設置爲true的風格我運用我自己Validation.ErrorTemplate解決方法:

<Style TargetType="{x:Type TextBox}"> 
      <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"></Setter> 
         <Style.Triggers> 
            <Trigger Property="IsVisible" Value="True"> 
        <Setter Property="Validation.ErrorTemplate"> 
         <Setter.Value> 
          <ControlTemplate> 
           <Border BorderBrush="Red" BorderThickness="1" > 
            <AdornedElementPlaceholder/> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
+0

+1我只是神完全相同的問題,唯一的區別容器是一個用戶控件而不是一個tabitem。您是否找到比此解決方法更好的解決方案? – Karsten

+0

@Karsten最後回答...我沒有找到更好的解決方案。 – Dummy01

+0

謝謝你。我有與TabItems相同的問題,並且即將使用一些非常糟糕的解決方法 - 這是一個更乾淨的方法。 – MetalMikester