我的silverlight控件可以支持传递给它的东西:
<MyControl>
<OtherControl/>
</MyControl>
但如果我这样做:
<MyControl>
THIS IS TEXT
</MyControl>
并尝试运行它我得到一个错误说:
MyControl不支持文字内容。 [线路:142位置: 72]
MyControl的item属性应该支持所有对象,因此它可以支持Textbox和按钮以及其他控件。但是,如果我尝试传入原始文本,它就不起作用。
我知道这应该是可行的,我唯一的问题是,如何?
答案 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
}