Ho fatto un po 'di programmazione WPF molto tempo fa, ma sto solo tornando a xaml con UWP, ma penso che questo dovrebbe funzionare e non riesco a capire perché. Fondamentalmente voglio usare ItemsControl (perché voglio solo elencare alcuni dati, non voglio selezione) invece di un controllo ListView. Qui sono le mie risorse:ItemsControl e ItemTemplateSelector in Windows 10 UWP app
<Page.Resources>
<DataTemplate x:Key="SentMessageDataTemplate">
<TextBlock Text="Sent" />
</DataTemplate>
<DataTemplate x:Key="ReceivedMessageDataTemplate">
<TextBlock Text="Recieved" />
</DataTemplate>
<services:MessageDataTemplateSelector x:Key="MessageDataTemplateSelector" ReceivedTemplate="{StaticResource ReceivedMessageDataTemplate}" SentTemplate="{StaticResource SentMessageDataTemplate}"></services:MessageDataTemplateSelector>
</Page.Resources>
Ecco il mio ItemsControl:
<ItemsControl ItemsSource="{Binding Messages}" ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" />
ecco la mia DataTemplateSelector:
public class MessageDataTemplateSelector : DataTemplateSelector
{
public DataTemplate SentTemplate
{
get;
set;
}
public DataTemplate ReceivedTemplate
{
get;
set;
}
protected override DataTemplate SelectTemplateCore(object item)
{
var message = item as MessageViewModel;
if (message == null)
{
return this.SentTemplate;
}
return message.Sent ? this.SentTemplate : this.ReceivedTemplate;
}
}
Invece di visualizzare uno dei miei modelli solo visualizza il mio nome tipo ViewModel (quindi in pratica ToString).
Tuttavia, se si passa da ItemsControl a ListView, funziona correttamente.
Qualche suggerimento?
Ha avuto lo stesso problema in una delle mie app di recente! Mi chiedo se questo è risolvibile ... – Depechie