Я применил стиль ошибки для текстовых полей, используя следующий код. Это устанавливает всплывающую подсказку и помещает хорошее изображение ошибки справа от текстового поля, если элемент сообщает о статусе ошибки через интерфейс IDataErrorInfo:Стиль ошибки радио кнопки
<!-- Set error style for textboxes -->
<Style x:Key="txtBoxErrStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel DockPanel.Dock="Right">
<AdornedElementPlaceholder />
<Image Source="Icons/Error.png"
Height="16"
Width="16"
ToolTip="{Binding Path=AdornedElement.ToolTip, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Adorner}}}" />
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Это работает очень хорошо для меня, добавляя текст наконечника инструмента и настройки изображение Error.png справа от текстового поля. Но то, что я хочу сделать, это дать аналогичную функциональность переключателю. Я попытался сделать это путем копирования выше кода и изменить тег, чтобы быть:
<!-- Set error style for radio buttons -->
<Style x:Key="radioBtnErrStyle" TargetType="{x:Type RadioButton}">
поле, что кнопка радио обязана сообщать об ошибках через интерфейс IDataErrorInfo, а переключатель сам ValidatesOnDataErrors установлен верно ,
Этот тип работал для меня. Когда радиокнопка считается ошибочной, подсказка установлена в для сообщения об ошибке, возвращаемого из процедуры IDataErrorInfo. Но я не могу представить изображение Error.png для отображения в форме.
Я пробовал некоторые основные привинчивания со стилем, такие как замена порядка и элементов, но ничего, что я пытался, казалось, сработало.
Итак, любые идеи относительно того, как я могу получить изображение для отображения?
Update
ответ Штеффен ударил гвоздь по голове. Увеличение маржи позволило отобразить изображение.
Однако я столкнулся с другой, отдельной проблемой в том случае, если условие ошибки присутствует, когда программа сначала запускается, подсказка инструмента будет отображать условие ошибки, но изображение не будет отображаться. Только когда условие ошибки активно поднимается после запуска программы, изображение также отображается. Я видел это раньше, но еще не видел правильного способа его обработки. Время исследовать еще одну тему WPF!
Что касается вашего обновления и без погружения в механику Validation.ErrorTemplate здесь: по-видимому, срабатывает триггер, в то время как уже связанный шаблон не работает - возможно, вы могли бы попытаться связать свойство шаблона позже с помощью триггера и обойти проблему? Validation.ErrorTemplate, похоже, требует особого лечения здесь и там, см. Http://stackoverflow.com/questions/1194181/wpf-errortemplate-visible-when-not-focused для соответствующей проблемы. –