Usando x: Vincular-se ao controle do usuário do layout ItemTemplate do GridView no UWP
Na API da Plataforma Universal do Windows, como uso x: Bind dentro de um Controle de Usuário (destinado ao layout do ItemTemplate de um GridView) para vincular às propriedades da instância do ItemSource de um GridView?
fundo
Estou tentando recriar o layout encontrado nos aplicativos de ações do Windows 10, como Esportes, Notícias, Dinheiro, etc.
Estou usando dois GridViews para a área principal do aplicativo; uma para "artigos em destaque" (2 fotos grandes com títulos) e uma para todos os outros artigos (fotos menores com títulos).
Sou capaz de vincular a uma fonte de dados que forneço no código por trás (uma lista em que NewsItem é um POCO com uma propriedade Image e Headline) Aqui estão as partes pertinentes do MainPage.xaml:
<Page ...
xmlns:data="using:NewsApp.Models" />
....
<GridView Name="FeaturedItems" Grid.Row="0">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:NewsItem">
<Grid Name="mainPanel" HorizontalAlignment="Stretch" Width="500" >
<Image Source="{x:Bind Image}" HorizontalAlignment="Stretch" />
<TextBlock Text="{x:Bind Headline}" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
....
A imagem e o título são ótimos (mesmo que não tenham sido estilizados corretamente). No entanto, em vez disso, acho que preciso vincular a um controle de usuário para obter as opções de estilo desejadas, controlar o redimensionamento de esp. ao usar o Visual State Triggers e para simplificar o XAML em geral (pelo menos, essa foi a técnica sugerida para mim).
Portanto, adicionei um novo controle de usuário ao projeto (FeaturedItemControl.xaml) e copiei a grade filho do DataTemplate:
<UserControl ... >
<Grid Name="mainPanel" HorizontalAlignment="Stretch" Width="500" >
<Image Source="{x:Bind Image}" HorizontalAlignment="Stretch" />
<TextBlock Text="{x:Bind Headline}" />
</Grid>
</UserControl>
E, novamente, no MainPage.xaml, altero o DataTemplate para referenciar o novo FeaturedItemControl:
<GridView Name="FeaturedItems" Grid.Row="0">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:NewsItem">
<local:FeaturedItemControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
No entanto, recebo a mensagem de erro para as propriedades Imagem e Título: Caminho de ligação inválido 'Headline': A propriedade 'Headline' não pode ser encontrada no tipo 'FeaturedItemControl'.
Eu tentei algumas coisas, mas estou debatendo apenas jogando código no problema sem entender o que estou fazendo. Qualquer ajuda seria muito apreciada.
Obrigado pela sua atenção.