Я хочу, чтобы в текстовых полях отображался конкретный текст в виде подсказки в зависимости от статуса проверки. Для этого я в настоящее время использую следующий код и он работает:Wpf TextBox style with tooltip
<TextBox Name="textBox1">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="False">
<Setter Property="ToolTip" Value="{Binding XPath=HelpText/Description, Mode=OneTime}" />
</Trigger>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
Когда нет ошибок, отображается текстовое описание чтения из XML-файла и при наличии ошибки отображается строка ошибки проверки.
Проблема в том, что теперь мне нужно скопировать этот стиль и применить его к каждому текстовому полю (и изменить XPath, он уникален для каждого текстового поля), то, что я хотел бы сделать, это поместить стиль в Window.Resources так что я могу просто ссылаться на него для каждого текстового поля, как это:
<TextBox Name="textBox2" Style="{StaticResource TextBoxStyle}" />
Но XPath будет отличаться для каждого текстового поля, так что я не могу просто поставить свой стиль в Window.Resources. Как я могу создать конкретный экземпляр XPath в стиле? Есть ли способ сделать это, не создавая новое текстовое поле и получая из TextBox? Мне было интересно, можно ли использовать приложенное свойство в этом случае, но я не знаю, как они работают.
Заранее спасибо.
Спасибо за ваш ответ, я не могу получить связывание в стиле работы, я попытался ' ', но я получаю ошибку" Свойство путь недопустим. «ToolTipHelper» не имеет открытого свойства с именем «ToolTip». «Я создал ToolTipHelper в соответствии с [link] (http://msdn.microsoft.com/en-us/library/ms753957.aspx?cs-save-lang= 1 & cs-lang = csharp # code-snippet-1). Любая идея, что я делаю неправильно? –
dbostream
Скорее всего, вы не предоставили правильные аргументы методу RegisterAttached. 1. Имя свойства без «Свойство», 2 тип значения свойства 3. класс владельца свойства «ToolTipHelper» 4. метаданные с по меньшей мере значением по умолчанию. – dowhilefor
Спасибо, что я заметил, что использовал неправильный класс владельца. Мне также пришлось изменить режим привязки на OneWay, когда я использовал OneTime, подсказка всегда отображала текст по умолчанию. Еще раз спасибо за помощь. – dbostream