Как проверить комбинацию значений в двух разных текстовых окнах? - PullRequest
0 голосов
/ 04 августа 2011

Как я могу проверить их с помощью комбинации 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}"/>

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Для этого вам нужно будет использовать BindingGroup. У Винсента Сибала есть отличная запись в блоге об этом: BindingGroups с проверкой уровня элемента .

0 голосов
/ 04 августа 2011

Я не уверен, что это лучшее решение, но оно работает для меня. Обычно я обращаюсь с этим, создавая DataTrigger, связанный с логическим свойством, которое указывает на допустимость или недопустимость.

Если логическое значение равно false, я выделяю границу красным цветом. Если нет, то цвет рамки отсутствует.

Вот пример 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>

Если вы примените этот стиль к обоим нашим текстовым полям, привязанным к одному и тому же логическому значению, они оба будут отображаться с ярко-красной рамкой, когда логическое значение равно false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...