Content属性如何工作

时间:2016-10-03 22:22:07

标签: wpf xaml

以下两种语法都有效。我的问题是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;当我创建自定义控件?

1 个答案:

答案 0 :(得分:1)

ContentPropertyAttribute告诉xaml解析器哪个属性用于直接内容。

ContentControl继承的

Button标记为attibute [ContentProperty("Content")]。同样,ItemsControlListBox的祖先)标有[ContentProperty("Items")]