2013-12-13 5 views
1

Например, у меня есть кнопка, находящаяся внутри User Control, и я бы хотел разоблачить ее собственные свойства, поэтому всякий раз, когда кто-то использует User Control, можно легко изменить значения свойств своей кнопки. Я был на самом деле в состоянии сделать это двумя способами:Как открыть свойства элемента управления, находящегося внутри пользовательского элемента управления?

Первый связав свойство Button, такие как, FontSize ее эквивалент в UserControl:

<Button FontSize="{Binding Path=FontSize, ElementName=UserControl}" /> 

Во-вторых, связав свойство Button на новую Dependency собственности который добавляется в пользовательский элемент управления.

<Button Content="{Binding Path=DependencyProperty, ElementName=UserControl}" 

Теперь вопрос, есть ли способ, чтобы получить доступ к свойствам кнопки непосредственно в XAML, не делая каких-либо привязок к пользовательский элемент управления?

+0

Дайте кнопке имя и используйте 'ElementName', как вы делали с' UserControl'. Я бы посоветовал вам читать MVVM, потому что это, вероятно, сэкономит вам много головных болей, привязанных к именам элементов. Это станет спагетти быстрее, чем вы можете сказать болгонезе. – Silvermind

+0

Но тогда как я буду использовать ElementName кнопки в XAML. Например, если UserControl удаляется на Canvas, например , где должна быть ButtonName? – usefulBee

+0

Я неправильно понял ваш вопрос, но вы не должны этого делать. Вероятно, вы хотите создать настраиваемый элемент управления. [Простой пример] (http://wpftutorial.net/HowToCreateACustomControl.html) – Silvermind

ответ

2

Не нужно называть Controls в WPF. Что вы можете сделать, это использовать привязку на Parent, используя его тип, а не называть его.

<Button FontSize="{Binding FontSize, RelativeSource={RelativeSource Mode=FindAncestor, 
        AncestorType={x:Type UserControl}}}" /> 

Это самый простой способ.

+2

Очень хорошая точка. Однако я хотел держаться подальше от привязки. Например, если бы я хотел разоблачить все свойства кнопки, это означает, что мне нужно будет связать каждую из них и, возможно, добавить некоторые дополнительные свойства зависимостей, если у User Control нет эквивалентных. Это большая работа. – usefulBee

Смежные вопросы

 Смежные вопросы