У меня есть шаблон элемента управления на одной из моих страниц, и я назначаю этот шаблон свойству Validation.ErrorTemplate своего текстового поля. Следующий код даст вам лучшее представление.
<ControlTemplate x:Key="ValidationErrorTemplate"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <AdornedElementPlaceholder/> <Image Name="ValidizorImage" Stretch="None" Source="validizor.gif" ToolTip="{Binding [0].ErrorContent}" ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="60000"/> </StackPanel> </ControlTemplate>
Приведенный выше шаблон устанавливает изображение в конце текстового поля, в котором возникает ошибка. Этот шаблон используется, как показано ниже.
<TextBox Grid.Column="5" Grid.Row="1" x:Name="txtemail" Grid.ColumnSpan="3" Margin="0,1,20,1" Validation.ErrorTemplate="{StaticResource ValidationErrorTemplate}" />
Вот мой вопрос
Я хочу переместить этот шаблон управления за пределы этой страницы, чтобы можно было использовать его во всем приложении.
Я попытался поместить тот же код шаблона элемента управления в пользовательский элемент управления, скажем "ErrorUC"
<UserControl...> <Grid> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right"> <AdornedElementPlaceholder/> <Image Name="ValidizorImage" Stretch="None" Source="validizor.gif" ToolTip="{Binding [0].ErrorContent}" ToolTipService.InitialShowDelay="0" ToolTipService.ShowDuration="60000"/> </StackPanel> </Grid> </UserControl>
и использовал его, как показано ниже
TextBox1.SetResourceReference (System.Windows.Controls.Validation.ErrorTemplateProperty, new ErrorUC());
Выполнив приведенный выше код, я узнал, что «AdornedElementPlaceholder» можно использовать только в шаблонах, а не в пользовательских элементах управления. Если я прокомментирую то же самое, я не получаю желаемого результата.