У меня есть текстовое поле со следующим простым XAML (не нужно читать его - просто имейте для справки):
<TextBox Name="m_ctrlUserDeviceType" Style="{StaticResource textStyleTextBox}" Text="{Binding Source={x:Static api:MySettings.Instance}, Path=UserDeviceType, ValidatesOnExceptions=true, NotifyOnValidationError=true}" Validation.Error="TextBox_Error" MinHeight="25" Margin="4" VerticalAlignment="Top" MaxLength="23" VerticalContentAlignment="Center" HorizontalAlignment="Left" MinWidth="100"></TextBox>
Для полноты стиль textStyleTextBox выглядит следующим образом (опять же, не обязательно)читать, чтобы ответить на вопрос):
<Style x:Key="textStyleTextBox" TargetType="TextBox">
<Setter Property="Foreground" Value="#333333" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="MinHeight" Value="2" />
<Setter Property="MinWidth" Value="100" />
<Setter Property="Margin" Value="4" />
<Setter Property="MaxLength" Value="23" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Left" />
<!-- <Setter Property="Binding Source" Value="{x:Static api:MySettings.Instance}"/>
<Setter Property="Binding ValidatesOnExceptions" Value="true" />
<Setter Property="Binding NotifyOnValidationError" Value="true" /> -->
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>
У меня есть много вещей (MiHeight, Margin и т. д.) в стиле, потому что у меня много этих текстовых полей, и они почти точно такие же,На самом деле, здесь гораздо больше общего, чем просто стиль.Детали привязки к классу MySettings практически одинаковы.Разница лишь в том, какое конкретное свойство текстовое поле также является обязательным.Кроме того, я всегда использую TextBox_Error для Validation.Error.
Можно ли поместить информацию о привязке в стиль или шаблон данных, чтобы мне не приходилось вводить ее для каждого текстового поля?
Мне нужно было бы иметь возможность назначить отдельное свойство (путь) для каждого текстового поля, и я полагаю, мне все еще нужна возможность не использовать его для какого-то конкретного текстового поля, добавленного в будущем (которое имеетничего общего с привязкой данных к MySettings).
Есть ли способ поместить часть TextBox_Error в style или DataTemplate?Использование свойства Setter, похоже, не работает для меня.
Я продолжаю упоминать шаблон данных, так как думаю, что ответ может быть связан с тем, что основано на чтении Pro Silverlight 2 в C # 2008. Однако яне смог понять это.Я также попытался добавить материал в «Стиль», как вы можете видеть из закомментированного материала в этом разделе.
Спасибо,
Дейв