2010-11-21 24 views
1

UserControls genellikle DataContext nasıl ayarlanır? Ben bir Bağlanma ile Kontrolünü kullanmak istediğinizde benim Pencere veya diğer Kontroller ise benim UserControl aşağıdaki gibi bir şey,UserControls içinde DataContext

DataContext = this 

yaparsanız, ben Pencere/UserControl

işaret edecek bir RelativeSource sahip olmak zorunda kalacaktır set UserControls yerine DataContext kullanım RelativeSource:
<local:UserControl1 TextContent="{Binding Text1, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" /> 

UserControls içinde Kontroller bağlamak yolu var mı?

<UserControl x:Class="SetCurrentValueTest.UserControl1" ...> 
    <TextBox Text="{Binding Path=TextContent, RelativeSource={RelativeSource AncestorType={x:Type local:UserControl1}}}" /> 
</UserControl> 

cevap

1

Ben aradığınız buysa Bilmiyorum, ama UserControls Bağımlılık-Özellikler bağlamak istiyorsanız, bunu kullanın: UserControl yıllardan bağlamak istiyorsanız

<UserControl x:Class="SetCurrentValueTest.UserControl1" ...> 
    <TextBox Text="{Binding Path=TextContent, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" /> 
</UserControl> 

Ve DataContext, bu Bağlama kullanın:

<UserControl x:Class="SetCurrentValueTest.UserControl1" ...> 
    <TextBox Text="{Binding Path=DataContext.TextContent, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" /> 
</UserControl> 

Ben senin Beton Tipi (UserControl1) Atası-Type olarak UserControl belirterek değilim ve değil.

+0

İkinci örnek, DataContext'i UserControl ve TextBox arasında başka bir şeye ayarlamamışsanız, {Binding TextContent} 'dan farklı bir şey yapmayacaktır; Aksi takdirde, TextBlock DataContext'i miras alır. Ve UserControl veya UserControl1'i AncestorType olarak belirterek, UserControl1 içinde bulunan ve TextBox'u içeren farklı bir türde başka bir UserControl varsa, yalnızca bir fark yaratacaktır. –

İlgili konular