Я реализую два элемента состояния.У меня есть два xaml (для первого и второго штата).Я должен изменить состояние при щелчке мыши.
Я создаю собственный дочерний элемент Control и использую xaml
<Style TargetType="l:ActionButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="l:ActionButton">
<ContentControl x:Name="LayoutRoot">
<ContentControl.Resources>
<ControlTemplate x:Key="buttonDownTemplate">
<Canvas>.....</Canvas>
</ControlTemplate>
<ControlTemplate x:Key="buttonUpTemplate">
<Canvas>.....<Canvas>
</ControlTemplate>
</ContentControl.Resources>
</ContentControl>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
В OnApplyTemplate я выполняю изменение шаблона
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var btn = GetTemplateChild("LayoutRoot") as ContentControl;
if (btn != null)
{
btn.MouseLeftButtonDown += (o, e) =>
{
//sample change template
var template = (ControlTemplate)btn.FindResource("buttonDownTemplate");
this.Template = template;
};
}
}
Но когда я запускаю приложение со своим контролем, я получаю: "Элемент с таким же ключом уже добавлен. "исключение?
Что не так.Мой путь прав?
Спасибо, Андрей