ItemsControl ItemTemplate Binding

В WPF4.0 у меня есть класс, который содержит другие типы классов в качестве свойств (объединяя несколько типов данных для отображения). Что-то вроде:

public partial class Owner
{
     public string OwnerName { get; set; }
     public int    OwnerId   { get; set; }
}

partial class ForDisplay
{
    public Owner OwnerData { get; set; }
    public int Credit { get; set; }
}

В моем окне у меня есть ItemsControl со следующим (вырезано для ясности):

<ItemsControl ItemsSource={Binding}>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
          <local:MyDisplayControl 
                OwnerName={Binding OwnerData.OwnerName}
                Credit={Binding Credit} />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Затем я получаю коллекцию отображаемой информации из слоя данных и устанавливаюDataContext изItemsControl в эту коллекцию. Свойство «Кредит» отображается правильно, а свойство OwnerName - нет. Вместо этого я получаю ошибку привязки:

Ошибка 40: ошибка пути BindingExpression: свойство 'OwnerName' не найдено в 'object' '' ForDisplay '(HashCode = 449124874)'. BindingExpression: Path = OwnerName; DataItem = 'ForDisplay' (HashCode = 449124874); целевым элементом является TextBlock (Name = txtOwnerName '); Целевое свойство - «Текст» (тип «Строка»)

Я не понимаю, почему он пытается найти свойство OwnerName в классе ForDisplay, а не в классе Owner из свойства ForDisplay OwnerData.

редактировать Похоже, что это связано с использованием пользовательского элемента управления. Если я связываю те же свойства сTextBlockони работают правильно.

<ItemsControl ItemsSource={Binding}>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
          <StackPanel>
              <local:MyDisplayControl 
                        OwnerName={Binding OwnerData.OwnerName}
                        Credit={Binding Credit} />
              <TextBlock Text="{Binding OwnerData.OwnerName}" />
              <TextBlock Text="{Binding Credit}" />
          </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Ответы на вопрос(1)

Ваш ответ на вопрос