У меня есть текстовое поле, которое имеет следующий простой XAML (не надо читать - просто это для справки):Вопрос о шаблоне данных или стиле в WPF 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, маржа и т.д.) в стиле, потому что у меня есть много этих текстовых полей, и они» почти точно то же самое. На самом деле, есть намного больше общего, чем просто стиль. Детали привязки к классу MySettings почти одинаковы. Единственное различие заключается в том, какое конкретное свойство имеет текстовое поле. Кроме того, я всегда пользователь TextBox_Error для Validation.Error.
Есть ли способ разместить информацию привязки в стиле или шаблоне данных, поэтому мне не нужно набирать ее для каждого текстового поля?
Мне нужно было бы назначить индивидуальное свойство (Путь) для каждого текстового поля, и я полагаю, что мне все еще нужна возможность не использовать его для какого-либо определенного текстового поля, добавленного в будущем (это не имеет ничего общего с делать с привязкой данных к MySettings).
Есть ли способ разместить часть TextBox_Error внутри стиля или DataTemplate? Использование Setter Property, похоже, не работало для меня.
Я продолжаю упоминать шаблон данных, поскольку, как я думаю, ответ может иметь какое-то отношение к этому, основанному на чтении Pro Silverlight 2 в C# 2008. Однако я не смог понять это. Я также попытался добавить материал в «Стиль», как вы можете видеть из прокомментированного материала в этом разделе.
Спасибо,
Dave
Спасибо. Я рассмотрю этот подход. – Dave