Основываясь на каком-то стандартном веб-поиске, я сузил свою проблему до следующего: я считаю, что событие, которое запускает мою раскадровку, вызывается до расширения шаблона.Таким образом, имена не имеют смысла, а ссылки на имена, сделанные анимацией раскадровки, являются нулевыми.
Это не было бы проблемой, если бы я не работал с ControlTemplate.Я мог бы просто привязать событие после обновления макета, а затем вручную вызвать его в первый раз.Задача решена.Тем не менее, поскольку это ControlTemplate в собственном XAML-файле словаря ресурсов, я не могу использовать C # для решения этой проблемы.
(Обновление: я могу однозначно сказать, что это не проблема порядка - в другихсловами, это не имеет никакого отношения к определению содержимого до ControlTemplate.Resources или аналогичного. Однако подобные проблемы могут быть вызваны такими проблемами упорядочения, поэтому этот вопрос стоит изучить, если вы столкнулись с подобными проблемами. См. один из ответов нижесделано перед этим обновлением для более подробного объяснения.)
Опять же, я могу оказаться совсем не на том пути.Это просто мое понимание того, что происходит за кулисами.Чтобы вы могли судить сами, вот фактическое исключение:
System.InvalidOperationException:
{"Имя PART_UnderlineBrush не может быть найдено в области имен System.Windows.Controls.ControlTemplate '. "}
Вот стиль / шаблон для справки со всеми дополнительными элементами (раскадровки, свойства и т. Д.).
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="MetroTabItem" TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border>
<Border.BorderBrush>
<!-- This is the element that I need to reference, but I am unable to do so. -->
<SolidColorBrush Color="#00ffffff" x:Name="PART_UnderlineBrush" />
</Border.BorderBrush>
<ContentPresenter Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}" />
</Border>
<ControlTemplate.Resources>
<Storyboard x:Key="SelectTab">
<!-- This is the animation that will always fail, due to the name reference. -->
<ColorAnimation BeginTime="0:0:0"
Duration="0:0:0.5"
Storyboard.TargetProperty="Color"
Storyboard.TargetName="PART_UnderlineBrush"
To="#ddffffff" />
</Storyboard>
</ControlTemplate.Resources>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="Selector.Selected">
<BeginStoryboard Name="BeginSelected" Storyboard="{StaticResource SelectTab}" />
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>