.net – 在DataTemplate中设置控件属性不能按预期工作

我有自定义控件:

public class TestTextBox : TextBox
{
    public TestTextBox()
    {
        Text = "ctor text";
    }
}

和使用此控件的xaml:

<StackPanel Orientation="Vertical">
    <!-- 1. Use TestTextBox directly -->
    <controls:TestTextBox Text="xaml text"/>

    <!-- 2. Use TestTextBox in DataTemplate -->
    <ItemsControl>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <controls:TestTextBox Text="xaml text"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <System:String>111</System:String>
    </ItemsControl>
<StackPanel>

结果是TestTextBox.Text在这些情况下是不同的 – 第一种情况下为“xaml text”,第二种情况下为“ctor text”.

有人可以解释为什么它这样工作?在这两种情况下,我都希望TestTextBox.Text是“xaml text”.

最佳答案 我想你需要了解
Dependency Property Value Precedence.

使用模板时,依赖项属性的值优先级不同.

点赞