支持Silverlight控件中的文本内容
本文关键字:文本 Silverlight 控件 支持 | 更新日期: 2023-09-27 18:13:37
我的silverlight控件可以支持像这样传入的内容:
<MyControl>
<OtherControl/>
</MyControl>
但是如果我这样做:
<MyControl>
THIS IS TEXT
</MyControl>
并尝试运行它,我得到一个错误说:
MyControl不支持文本内容。[行:142]职位:72]
MyControl的item属性应该支持所有的东西,因为它是一个对象,所以它可以支持文本框,按钮和其他控件。但如果我试图传递原始文本,它就不起作用了。
我知道这应该是可行的,我唯一的问题是,怎么做?
您必须从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
}