以下两种语法都有效。我的问题是WPF如何知道内容是我指定的内容?
<Button>
<Button.Content>
my button
</Button.Content>
</Button>
<Button>
my button <!--how does wpf know this is the content-->
</Button>
类似地,wpf如何知道我现在正在添加ListBoxItems
<ListBox>
<!--ListBox.Items-->
<ListBoxItem Content="item 1" /> <!--XAML automatically knows I'm specifying items-->
item 2
<ListBoxItem Content="item 3" />
<!--/ListBox.Items-->
</ListBox>
所以在ContentControl中,默认属性是Content,而使用ItemsControl,默认属性是Items,而使用TextBox,默认属性是TextBox。
这个&#39;默认&#39;工作?
如何创建此默认属性&#39;当我创建自定义控件?
答案 0 :(得分:1)
ContentPropertyAttribute告诉xaml解析器哪个属性用于直接内容。
ContentControl
继承的 Button
标记为attibute [ContentProperty("Content")]
。同样,ItemsControl
(ListBox
的祖先)标有[ContentProperty("Items")]
。