2011-08-04 3 views
0

Like PropertyNumber와 OwnerNumber 조합과 같이 조합하여 유효성을 검사 할 수있는 방법은 데이터베이스에 존재해서는 안됩니다. 지금은 IDataErrorInfo을 사용하고 있지만 한 번에 하나의 값만 유효성을 검사합니다.두 개의 다른 텍스트 상자에서 값의 조합을 확인하는 방법은 무엇입니까?

 <Label DockPanel.Dock="Top" Width="Auto" Height="16"/> 

     <TextBox Name="PropertyNumber" DockPanel.Dock="Top" Text="{Binding 
     UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Path=SelectedPropertyNumber, 
     ValidatesOnDataErrors=True}" Width="115" Height="22" 
     HorizontalAlignment="Left" IsEnabled="{Binding 
     PropertyNumbersEnabled,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" /> 

     <Label DockPanel.Dock="Top" Width="Auto" Height="16"/> 

     <TextBox Name="OwnerNumber" Text="{Binding BindingGroupName=NGLDataFormGrp, 
     Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, 
     Path=OwnerNumber}" DockPanel.Dock="Top" HorizontalAlignment="Left" 
     Width="115" Height="22" IsEnabled="{Binding 
     UpdateSourceTrigger=PropertyChanged, 
     Path=OwnerNumberEnabled, Mode=TwoWay}"/> 
+0

IdataError를 사용하여 어떻게 검증하고 있습니까? 최상의 솔루션을 제공하는 데 도움이되는 코드를 게시하십시오. – Bathineni

답변

0

이것이 최선의 해결책인지는 확실하지 않지만 저에게는 잘 맞지 않습니다. 일반적으로 이것을 처리하는 방법은 유효하거나 유효하지 않은 부울 속성에 바인딩 된 DataTrigger를 만드는 것입니다.

부울 값이 거짓이면 테두리 스타일을 빨간색으로 지정합니다. 그렇지 않으면 테두리 색이 없습니다.

여기 예를 들어 DataTrigger입니다 : 부울이 거짓 인 경우

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="TextElement.FontFamily" Value="Calibri" /> 
    <Setter Property="TextElement.FontSize" Value="14" /> 
    <Setter Property="TextElement.Foreground" Value="Black" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=IsValid}" Value="False"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
       <DropShadowEffect BlurRadius="5" Color="Red" ShadowDepth="0" /> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="ToolTip" Value="Message Field entered does not exist in Message Output tree." /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=IsValid}" Value="True"> 
      <Setter Property="Effect" Value="{x:Null}" /> 
     </DataTrigger> 
    </Style.Triggers> 
    </Style> 

같은 부울 바인드 우리의 텍스트 상자의 양쪽에이 스타일을 적용하면, 그들은 둘 다 빛이 함께 빨간색 테두리를 표시합니다.

1

BindingGroup을 사용해야합니다. Vincent Sibal은 그것에 대한 훌륭한 블로그 항목을 가지고 있습니다 : BindingGroups with Item-level Validation.

+0

감사합니다. XAMeLi, BindingGroup을 알지 못했습니다. XAML을 사용하면 매일 무언가를 배울 수 있습니다. – Josh

관련 문제