У меня есть шаблон управления на одной из моих страниц, и я назначаю этот шаблон свойству 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» может использоваться только в шаблонах, а не в пользовательских элементах управления. Если я прокомментирую то же самое, я не получаю желаемого результата.
привет HTH, я попробовал свое решение. Pls проверяет это сообщение так же, как я не могу соответствовать моему запросу в разделе комментариев. – samar
привет, я получил его, добавив следующий код в xaml в текстовое поле, где мне нужен шаблон для работы. Validation.ErrorTemplate = "{DynamicResource ValidationErrorTemplate}" Но можем ли мы привести вышеупомянутое в код позади. Нечто похожее на TextBox1.SetResourceReference (Validation.ErrorTemplateProperty, ct); упомянутый выше ?? Пожалуйста, дайте мне знать. – samar
Как я уже сказал, я не эксперт в этом. Согласно MSDN, [SetResourceReference (...)] (http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.setresourcereference.aspx) должно быть * похоже * на 'DynamicResource', но они не дают подробностей о различиях. Во всяком случае, я думаю, что он должен сделать то же самое для этого сценария. Вызывает ли ваш вызов 'System.Windows.Application.Current.Resources [" ValidationErrorTemplate "];' возвращает любое значение, или это 'null'? Если это «null», вы должны использовать вместо этого this.FindResource (...) '. – gehho