支持Silverlight控件中的文本内容?

时间:2011-11-07 07:23:46

标签: c# silverlight xaml text

我的silverlight控件可以支持传递给它的东西:

<MyControl>
<OtherControl/>
</MyControl>

但如果我这样做:

<MyControl>
THIS IS TEXT
</MyControl>

并尝试运行它我得到一个错误说:

  

MyControl不支持文字内容。 [线路:142位置:   72]

MyControl的item属性应该支持所有对象,因此它可以支持Textbox和按钮以及其他控件。但是,如果我尝试传入原始文本,它就不起作用。

我知道这应该是可行的,我唯一的问题是,如何?

3 个答案:

答案 0 :(得分:4)

您必须从ContentControl派生您的控件,如下所示:

public class SimpleControl : ContentControl {

}

<local:SimpleControl>
    Some Text...
</local:SimpleControl>

<local:SimpleControl>
    <Button Content="Button" />
</local:SimpleControl>

答案 1 :(得分:3)

您必须为您的控件定义一个依赖项属性,您可以使用绑定为您的控件。 请参阅以下代码:

public class customtextbox : UserControl
{
    public static readonly DependencyProperty TextProperty =
        TextBox.TextProperty.AddOwner(typeof(customtextbox));
    public string Text
    {
        get { return (string)GetValue(TextProperty); }
        set { SetValue(TextProperty, value); }
    }
}

并设置Text属性:

<CT:customtextbox Text="somthing"/>  OR
<CT:customtextbox Text="{Binding  mypropertyinviewmodel}"/>

答案 2 :(得分:2)

您需要告诉编译器您的类的哪些属性将用于XAML中标记之间的内容。

假设您要使用的属性是

public string Title { get; set; }

在您的类定义之上,您需要添加ContentProperty属性,如下所示:

[ContentProperty("Title")]
public class MyControl
{
    // class code
}