2010-11-17 4 views
2

У меня есть быстрый связанный вопрос о Silverlight. У меня есть Expander и хочу переписать их заголовок ШаблоныКак связать свойство родительского элемента

<Controls:Expander Header="MyHeaderTitle" 
        HeaderTemplate="{StaticResource MyExpanderHeaderTemplate}"> 
    //Content 
</Controls:Expander> 
<Controls:Expander Header="MyNextHeaderTitle" 
         HeaderTemplate="{StaticResource MyExpanderHeaderTemplate}"> 
    //Content 
</Controls:Expander> 

В шаблоне заголовка У меня есть текстовое поле и хочу связать текст с заголовком расширителя.

<DataTemplate x:Key="MyExpanderHeaderTemplate"> 
    <TextBlock Text="{Binding Path=Header}"> 
     // some triggering stuff 
    </TextBlock> 
</DataTemplate> 

Я пробовал некоторые вещи с RelativeSource (Self и TemplatedParent), но ничего не работает. Некоторые идеи были бы замечательными, thx.

ответ

1

вы пробовали:

<DataTemplate x:Key="MyExpanderHeaderTemplate"> 
    <TextBlock Text="{Binding .}"> 
     // some triggering stuff 
    </TextBlock> 
</DataTemplate> 
1

Посмотрите на RelativeSourceMode.FindAncestor

<TextBlock 
    Text="{Binding RelativeSource={RelativeSource RelativeSourceMode=FindAncestor, AncestorType={x:Type Controls:Expander}}}, Path=Header"/> 
1

Просто сделай это

<DataTemplate x:Key="MyExpanderHeaderTemplate"> 
    <TextBlock Text="{Binding}"/> 
</DataTemplate> 
1

Спасибо за быстрые ответы. FindAncestor, похоже, не работает в Silverlight, как это делается в WPF (не может разрешить AncestorType ..) Но {Binding} или {Binding.} Делают трюк!

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