我有自定义控件:
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.
使用模板时,依赖项属性的值优先级不同.