Я пытаюсь установить Validation.ErrorTemplate из DataGridCells, вот код XAML:DataGridCell Validation.ErrorTemplate игнорировал
<Style x:Key="{x:Type DataGridCell}" x:Uid="dataGridCellErrorTemplate" TargetType="{x:Type DataGridCell}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate >
<Border BorderBrush="Green" BorderThickness="2" ToolTip="Heidenei"></Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<!-- following line only for demonstration that the setter is working ... -->
<Setter Property="Background" Value="Aquamarine"></Setter>
</Style>
а фон из datagridcells успешно окрашен в зеленом цвете (независимо от какого-либо результата проверки) используемый Validation.ErrorTemplate по-прежнему является значением по умолчанию, то есть красной рамкой.
Я знаю, что в stackoverflow были аналогичные проблемы, например. Styling DataGridCell Error Template , но они действительно не решают мою проблему.
любая помощь
Frank
[Поскольку контроль редактирования создаются во время выполнения, вы не можете использовать Validation.ErrorTemplate вложенное свойство, как вы бы с простым управлением] (http://msdn.microsoft.com/en-us/library/ ee622975.aspx). вам может потребоваться сделать это после рендеринга ('DispatcherTimer') –
Спасибо за ваши отзывы, но я не уверен, насколько я это понимаю. В моем сценарии datagridcells не редактируются пользователем (поэтому без редактирования), а фоновым процессом. Я все еще хочу использовать IDataErrorInfo, чтобы выделить те поля, которые имеют проблемные значения. – FrankE
, когда говорят «редактирование элементов управления», (я думаю), они означают «элементы управления, встроенные в каждый« DataGridCell ». другими словами, шаблон может применяться к ячейке, НО он перезаписывается при создании внутреннего элемента управления. поэтому вам может понадобиться захватить, когда создается Row, и прокрутите каждую ячейку, чтобы установить свое значение. –