Tôi đã làm một chương trình WPF nhỏ một thời gian dài trước đây, nhưng tôi chỉ trở lại xaml với UWP, nhưng tôi nghĩ rằng điều này sẽ làm việc và không thể hiểu tại sao. Về cơ bản tôi muốn sử dụng một ItemsControl (vì tôi chỉ muốn liệt kê một số dữ liệu, tôi không muốn lựa chọn) thay vì một điều khiển ListView. Dưới đây là các nguồn lực của tôi:ItemsControl và ItemTemplateSelector trong Windows 10 Ứng dụng UWP
<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>
Đây là ItemsControl tôi:
<ItemsControl ItemsSource="{Binding Messages}" ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" />
đây là DataTemplateSelector tôi:
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;
}
}
Thay vì hiển thị một trong hai mẫu của tôi nó chỉ hiển thị tên loại ViewModel của tôi (về cơ bản ToString).
Tuy nhiên nếu tôi chuyển từ ItemsControl sang ListView, nó hoạt động tốt.
Mọi đề xuất?
Đã xảy ra sự cố tương tự ở một trong các ứng dụng của tôi gần đây! Tự hỏi nếu điều này có thể giải quyết được không ... – Depechie