WPF Datagrid - Как проверить несколько строк и отметить все недействительные? - PullRequest
2 голосов
/ 13 ноября 2009

У меня есть таблица данных со строками, где проверка зависит от его братьев и сестер. До сих пор я использую BindingGroups и пользовательский ValidationRule для проверки нескольких строк одновременно. Но я не могу понять, как изменить внешний вид недействительных записей строки. Я возвращаю ValidationResult, и моя сетка получает красную рамку, но мой стиль игнорируется.

Мой код в стиле xaml:

    <Style TargetType="{x:Type dg:DataGridRow}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="BorderThickness" Value="10"/>
                    <Setter Property="BorderBrush" Value="Green"/>
                    <Setter Property="Background" Value="#F6B39E"/>
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                </Trigger>
            </Style.Triggers>
        </Style>

edit: может быть, я должен опубликовать немного больше моего кода на данный момент у меня есть это подтверждение:

 <dg:DataGrid.RowValidationRules>
      <viewModel:StreamGridValidationRules />
 </dg:DataGrid.RowValidationRules>

С помощью этого кода мой стиль выше устанавливается правильно, но только одна строка проверяется за один раз. Поскольку мне нужно проверить всех братьев и сестер, а также его родителей, я изменил свой код на это:

<dg:DataGrid.BindingGroup>
     <BindingGroup Name="BindingGroup">
         <BindingGroup.ValidationRules>
              <viewModel:StreamGridValidationRules />
          </BindingGroup.ValidationRules>
     </BindingGroup>
</dg:DataGrid.BindingGroup>

При этом я получаю несколько элементов в BindingGroup, но мой стиль полностью игнорируется, а сетка просто получает стандартную красную границу 1px.

Заранее спасибо за любые советы и подсказки!

Ts!

1 Ответ

0 голосов
/ 15 ноября 2009

что произойдет, если вы удалите x: Key = "RowStyle", тогда он будет работать?

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

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