Artículos Artículo de control Enlace de plantilla

En WPF4.0, tengo una clase que contiene otros tipos de clase como propiedades (combinando múltiples tipos de datos para mostrar). Algo como:

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; }
}

En mi ventana, tengo un ItemsControl con lo siguiente (recortado para mayor claridad):

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

Luego obtengo una colección de información de visualización de la capa de datos y configuro elDataContext delItemsControl a esta colección La propiedad "Crédito" se muestra correctamente, pero la propiedad OwnerName no. En cambio, me sale un error vinculante:

Error 40: error de ruta de BindingExpression: propiedad 'OwnerName' no encontrada en 'object' '' ForDisplay '(HashCode = 449124874)'. BindingExpression: Path = OwnerName; DataItem = 'ForDisplay' (HashCode = 449124874); el elemento de destino es 'TextBlock' (Nombre = txtOwnerName '); la propiedad de destino es 'Texto' (tipo 'Cadena')

No entiendo por qué esto intenta buscar la propiedad OwnerName en la clase ForDisplay, en lugar de en la clase Owner de la propiedad ForDisplay OwnerData.

Editar Parece que tiene algo que ver con el uso del control personalizado. Si ato las mismas propiedades a unTextBlockFuncionan correctamente.

<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>

Respuestas a la pregunta(1)

Su respuesta a la pregunta