2010-11-19 18 views
0

Editor bir UserControl varsa, bir TextBox sahip. Ayrıca Content bir mülk var. İşte ben sadece Öyleyse bu görüntülemek için bir pencere var statik değeri "Hey"UserBox denetimini doğru olarak yapmıyor

<UserControl x:Class="WpfApplication1.Editor" ...> 
    <TextBox Text="Hey" /> 
    <!--<TextBox Text="{Binding Content}" />--> 
</UserControl> 

metin içeriğini ayarlamak. Onu çalıştırdığınızda

<Window x:Class="WpfApplication1.Window1" ...> 
    <StackPanel> 
     <local:Editor Content="Heya" /> 
    </StackPanel> 
</Window> 

, ben

alt text

Onun bile bir TextBox olsun? Ve neden içeriği <local:Editor />'da ayarlıyorum. Temiz & Rebuild çözümünü denedim ve hala bu tuhaf şeyi alıyorum. Yeterince

cevap

2

Sayı


basit. Bir UserControl aslında bir ContentControl, yani Content adında bir bağımlılık özelliğine sahiptir. Bu özelliği ayarladığınızda, ContentControl'un tüm içeriğini siz belirlersiniz. İçerik özelliği varsayılan olanıdır (MSDN'de WPF için varsayılan özelliklere bakın).

<UserControl x:Class="WpfApplication1.Editor" ...> 

    <!-- Here, you set the Content property (because it is 
    the default one) of the UserControl as a TextBox with 
    the text "Hey". --> 

    <TextBox Text="Hey" /> 
</UserControl> 

üstünde ve kodları aşağıda karşılaştırın:


Çözüm ...

<!-- Here, the Content property is explicitly set. --> 
<local:Editor Content="Heya" /> 

Her iki durumda da, farklı içeriğe sahip İçerik özellik tanımlamak


Editor yılında DependencyProperty örneğin TextContent adında özel bir tanımlama, sorunu çözmek ve aşağıdakileri yapın:

<UserControl x:Class="WpfApplication1.Editor" ...> 
    <TextBox Text="{Binding TextContent, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" /> 
</UserControl> 

Ve:

<local:Editor TextContent="Heya" /> 
+0

Ah ... Son olarak, sonra çok uzun kaşıma kafam! –

İlgili konular