多次调用WPF getter

多次调用WPF getter,wpf,xaml,ironpython,getter,Wpf,Xaml,Ironpython,Getter,我有一个简单的wpf窗口: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <StackPanel> <TextBox AcceptsReturn="True" Text="{Binding A}" /><!-- TextBox1 --> <TextBox AcceptsReturn="True" Te

我有一个简单的wpf窗口:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <StackPanel>
        <TextBox AcceptsReturn="True" Text="{Binding A}" /><!-- TextBox1 -->
        <TextBox AcceptsReturn="True" Text="{Binding B}" /><!-- TextBox2 -->
        <TextBox AcceptsReturn="True" Text="{Binding C}" /><!-- TextBox3 -->
    </StackPanel>
</Window>
,其中ViewModel是INotifyPropertyChanged的C#实现

现在,当我打开此窗口时,三个
TextBox
es包含以下内容:

(TextBox1)
A getter call 1
B getter call 1
C getter call 1
A getter call 2

(TextBox2)    
A getter call 1
B getter call 1
C getter call 1
A getter call 2
A getter call 3
B getter call 2
C getter call 2
B getter call 3

(TextBox3)
A getter call 1
B getter call 1
C getter call 1
A getter call 2
A getter call 3
B getter call 2
C getter call 2
B getter call 3
A getter call 4
B getter call 4
C getter call 3
C getter call 4
这里有一个主要的问题困扰着我:为什么每个getter都被调用,而只有一个getter应该被调用来获取单个绑定的内容?为什么每个绑定属性的getter调用两次?这意味着,为什么每次属性访问都会调用每个getter,然后再次调用所需属性的实际getter

更糟糕的是:如果从xaml中删除第二个(甚至第三个)
TextBox
,则剩余的
TextBox
es中的文本不会更改,这意味着将调用未显示属性的获取程序


有人能解释一下发生了什么以及如何防止这种行为吗?

getter应该不会改变对象的状态。基于这一假设,各种服务都可以自由地呼叫它们。例如,当窗口需要重新绘制时,

< P>我可以想象,DLR经常调用吸气剂。WPF通常也使用getter进行类型检测。如果在编译时不知道该类型,则只能这样解析。

我在C#中尝试了“相同的代码”,但在那里一切都正常。
(TextBox1)
A getter call 1
B getter call 1
C getter call 1
A getter call 2

(TextBox2)    
A getter call 1
B getter call 1
C getter call 1
A getter call 2
A getter call 3
B getter call 2
C getter call 2
B getter call 3

(TextBox3)
A getter call 1
B getter call 1
C getter call 1
A getter call 2
A getter call 3
B getter call 2
C getter call 2
B getter call 3
A getter call 4
B getter call 4
C getter call 3
C getter call 4