C# DataContext更改并不总是导致DataTemplate.LoadContent类上的绑定更新

C# DataContext更改并不总是导致DataTemplate.LoadContent类上的绑定更新,c#,wpf,C#,Wpf,我正在创建一些附加属性,其中一个是DataTemplate。DataTemplate应该有一个我在其中创建并定义的FrameworkElement,因此所有这些的XAML声明如下所示: <SomeControl m:ItemsSource="{Binding Source}"> <m:MyTemplate> <DataTemplate> <m:MyClass SomeDependency="{Binding Path}"/>

我正在创建一些附加属性,其中一个是DataTemplate。DataTemplate应该有一个我在其中创建并定义的FrameworkElement,因此所有这些的XAML声明如下所示:

<SomeControl m:ItemsSource="{Binding Source}">
  <m:MyTemplate>
    <DataTemplate>
      <m:MyClass SomeDependency="{Binding Path}"/>
    </DataTemplate>
  </m:MyTemplate>
</SomeControl>
奇怪的是,以这种方式创建的MyClass的第一个实例获得绑定更新(SomeDependencyProperty使用ItemsSource中的项中的值进行更新),但其余实例都没有得到更新

我已经通过自己创建MyClass而不是LoadContent调用并使用BindingOperation.SetBinding设置绑定,验证了这一点,如下所示:

foreach(var item in items)
{
  var myClass = new MyClass();
  BindingOperations.SetBinding(myClass, MyClass.SomeDependencyProperty, new Binding("Path");
  myClass.DataContext = item;
}

有人知道为什么LoadContent调用似乎生成的对象在DataContext更改时不会全部更新其绑定吗?LoadContent调用与自己创建对象有什么不同?

一位同事指出,MyClass的实例没有任何内容。添加引用这些实例的方法解决了我看到的问题。它没有完全解释为什么第一个实例会得到更新,而其余的不会,但它已经解决了我的问题

foreach(var item in items)
{
  var myClass = new MyClass();
  BindingOperations.SetBinding(myClass, MyClass.SomeDependencyProperty, new Binding("Path");
  myClass.DataContext = item;
}