2010-11-19 12 views
0

Angenommen, ich habe ein UserControl Editor es hat eine TextBox. Es hat auch eine Eigenschaft Content. Hier stelle ich den Textinhalt auf einen statischen Wert "Hey" einTextBox in UserControl nicht korrekt rendern

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

Dann habe ich ein Fenster, um all dies anzuzeigen.

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

Wenn ich es laufen lasse, erhalte ich

alt text

Es ist nicht einmal ein TextBox? Und warum bekomme ich den Inhalt in <local:Editor /> festgelegt. Ich versuchte Clean & Rebuild Lösung und ich bekomme immer noch diese seltsame Sache.

Antwort

2

Ausgabe


Einfach genug. A UserControl ist eigentlich nur ein ContentControl, also hat es eine Abhängigkeitseigenschaft mit dem Namen Content. Wenn Sie diese Eigenschaft festlegen, legen Sie den gesamten Inhalt Ihrer ContentControl fest. Die Content-Eigenschaft ist die Standardeigenschaft (überprüfen Sie die Standardeigenschaften für WPF auf MSDN).

<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> 

Vergleichen oben und unten Codes:

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

In beiden Fällen können Sie die Content-Eigenschaft mit unterschiedlichen Inhalten definieren ...


Lösung


Ihr Problem zu lösen, definieren eine benutzerdefinierte DependencyProperty in EditorTextContent zum Beispiel genannt, und gehen Sie wie folgt vor:

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

Und:

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

Ah ... Endlich, nach so lange Kratz mein Kopf! –

Verwandte Themen