支持Silverlight控件中的文本内容

本文关键字:文本 Silverlight 控件 支持 | 更新日期: 2023-09-27 18:13:37

我的silverlight控件可以支持像这样传入的内容:

<MyControl>
<OtherControl/>
</MyControl>

但是如果我这样做:

<MyControl>
THIS IS TEXT
</MyControl>

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

MyControl不支持文本内容。[行:142]职位:72]

MyControl的item属性应该支持所有的东西,因为它是一个对象,所以它可以支持文本框,按钮和其他控件。但如果我试图传递原始文本,它就不起作用了。

我知道这应该是可行的,我唯一的问题是,怎么做?

支持Silverlight控件中的文本内容

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

public class SimpleControl : ContentControl {
}

<local:SimpleControl>
    Some Text...
</local:SimpleControl>
<local:SimpleControl>
    <Button Content="Button" />
</local:SimpleControl>

你必须为你的控件定义一个依赖属性,你可以使用它来绑定你的控件。参见下面的代码:

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); }
    }
}

文本属性:

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

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

假设你想使用的属性是

public string Title { get; set; }

在你的类定义上面,你需要像这样添加ContentProperty属性:

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