2010-11-17 3 views
1

Привет У меня есть пользовательский элемент управления. У этого настраиваемого элемента управления DataContext установлен объект. В моем пользовательском элементе управления я привязываю некоторые текстовые блоки к различным свойствам этого объекта.Привязка к настраиваемому свойству управления

Я также хотел бы привязать TextBlock к свойству класса элемента управления. Я не хочу/должен установить это свойство через XAML.

Что-то вроде

<TextBlock Content="{Binding Path=MyControl.Property}" /> 

Прямо сейчас, мой, кажется, пытается использовать связанный объект для решения этой привязки, а не класс моего пользовательского элемента управления.

ответ

1

В вашем пользовательском элементе управления вы должны предоставить свойство зависимости с свойством, которое вы хотите связать.

Кроме того, вы, вероятно, не хотят связывать содержимое TextBlock, вы хотите, чтобы связать текст:

<TextBlock Text="{Binding Path=MyControl.Property}" /> 
+0

Проголосовать за базовый образец –

2

Вы можете использовать RelativeSource в вашем Binding

{Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type MyControl}}} 

Также вы можно увидеть больше in this question

+0

Это будет работать в WPF, но не работает в Silverlight. В Silverlight самый простой способ - не использовать привязки вообще и явно задавать из кода (при условии, что пользовательский 'Control', а не' UserControl' – Stephan

+0

Yep, вы правы. Silverlight не поддерживает это. Я пропустил этот «silverlight», тег на вопрос. –

1

Если TextBlock находится в ControlTemplate вашего настраиваемого элемента управления, тогда вы можете создать DP в своем настраиваемом элементе управления и t hen шаблон привязывается к нему. , например.

<TextBlock Text="{TemplateBinding CustomControlPropertyName}" /> 
Смежные вопросы