2016-07-12 2 views
0

У меня есть CustomButton (назовем его MetroButton), который происходит от Button и добавляет 3 свойства: Size, ImageSource и Text. Размер определяет ширину и высоту элемента управления одновременно.ResourceDictionary Ссылка на шаблон для Self

MetroButtons состоит из шаблона - теперь я хочу вырезать шаблон в автономный ResourceDictionary.xaml - но как я могу ссылаться на ширину и высоту кнопки на пользовательское свойство «Размер»?

<ControlTemplate TargetType="Button"> 
     <Border x:Name="_border" 
       Width="{Binding Size, 
           ElementName=_metroButton, 
           UpdateSourceTrigger=PropertyChanged, 
           Mode=TwoWay}" 
       Height="{Binding Size, 
           ElementName=_metroButton, 
           UpdateSourceTrigger=PropertyChanged, 
           Mode=TwoWay}" 
       Background="{StaticResource DefaultButtonBackgroundColor}" 
       BorderBrush="{StaticResource DefaultButtonBorderColor}" 
       BorderThickness="{TemplateBinding BorderThickness}"> 

В данный момент я в состоянии использовать ELEMENTNAME, поскольку шаблон определяется непосредственно внутри класса MetroButton - если шаблон определен вне класса не существует никакой возможности ссылаться на ELEMENTNAME (AFAIK) - и с помощью

RelativeSource={RelativeSource Self} 

также не приведет к ожидаемому результату - тогда стили не будут применяться вообще.

Любые решения?

+1

Почему вы не прикладывая шаблон в теме по умолчанию XAML в? Затем шаблон управления будет нацелен на тип «MetroButton», и вы можете просто использовать «TemplateBinding». – Jai

+0

Omg, вы так правы - как описано, я хотел поместить шаблон в Default.xaml, но я забыл, что тогда я могу напрямую настроить MetroButton. Если вы примете свой комментарий и поместите его в ответ, я установлю его как решение :) – C4p741nZ

+0

Хорошо, к сожалению Это не так просто - Idk, почему это сработало на первый взгляд. MetroButton определяется как кнопка (

ответ