2014-04-03 33 views
1

我有驗證的文本框和組合框。當盒子爲空時,如啓動時,我想顯示一個特定的樣式,當有一個無效的值和不同的樣式時。從技術上講,空框是一個錯誤,因爲我需要禁用按鈕,直到框中包含有效的值。WPF爲空文本框和驗證錯誤分開的樣式

有沒有一種方法可以根據驗證錯誤設置不同的樣式,或者我需要使空值不是錯誤,並通過簡單的驗證來控制按鈕,看看其餘的控件是否有效?

我目前使用這種風格的所有錯誤,包括空值。

<Style x:Key="Error" TargetType="{x:Type Control}"> 
     <Setter Property="VerticalAlignment" Value="Center" /> 
     <Setter Property="Margin" Value="0,2,40,2" /> 
     <Setter Property="Validation.ErrorTemplate"> 
      <Setter.Value> 
       <ControlTemplate> 
        <DockPanel LastChildFill="true"> 
         <Border Background="Red" DockPanel.Dock="left" Margin="5,0,0,0" 
          Width="20" Height="20" CornerRadius="10" 
          ToolTip="{Binding ElementName=customAdorner, 
             Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"> 
          <TextBlock Text="X" VerticalAlignment="center" HorizontalAlignment="center" Foreground="white" /> 
         </Border> 
         <AdornedElementPlaceholder Name="customAdorner" VerticalAlignment="Center" > 
          <Border/> 
         </AdornedElementPlaceholder> 
        </DockPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

1

我想你想對不同的錯誤有不同的錯誤模板或視覺效果。是對的嗎?如果是這樣,後面的帖子可能是你以後的。

Multiple validation rules

+0

這會讓我的解決方案。我正在使用IDataErrorInfo來報告驗證錯誤,所以我無法按照建議返回對象。我最終在樣式中使用了單個裝飾元素,並根據錯誤消息編寫了轉換器來更改元素的外觀。它不是一個很好的解決方案,但它適用於我的需求。 – TurboGus