一般来说,我是UWP和C#的新手。我正在尝试从我的视频库浏览文件,并将数据绑定到Listview控件。一切运行正常,我检查了所有变量,它们确实包含了正确的信息,但是列表视图中未填充任何内容。您能给我一个如何使其工作的提示吗?谢谢,如果我的代码不是最新技术,我要学习;)
这是我的主要班级:
namespace RedMedia
{
public sealed partial class MainPage : Page
{
private readonly List<Video> Videos;
public string resultat;
int i;
public MainPage()
{
this.InitializeComponent();
Videos = new List<Video>();
InitVideos();
}
private async void InitVideos()
{
var files = await KnownFolders.VideosLibrary.GetFilesAsync();
foreach (var file in files)
{
if (file != null)
{
var thumbnail = await file.GetThumbnailAsync(ThumbnailMode.VideosView, 50, ThumbnailOptions.ReturnOnlyIfCached);
Video video = new Video();
video.Title = file.Name;
if (thumbnail != null)
{
BitmapImage bitmapImage = new BitmapImage();
InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
await RandomAccessStream.CopyAsync(thumbnail, randomAccessStream);
randomAccessStream.Seek(0);
await bitmapImage.SetSourceAsync(randomAccessStream);
video.Cover = bitmapImage;
}
Videos.Add(video);
}
这是我的课堂视频:
namespace RedMedia.Modeles
{
class Video :
{
public BitmapImage Cover { get; set; }
public uint Bitrate { get; set; }
public List<string> Directors { get; set; }
public List<string> Producers { get; set; }
public TimeSpan Duration { get; set; }
public uint Height { get; set; }
public List<string> Keywords { get; set; }
public uint Rating { get; set; }
public string Subtitle { get; set; }
public string Title { get; set; }
public string Publisher { get; set; }
public uint Year { get; set; }
public string Path { get; set; }
public string category { get; set; }
public Video()
{
//some code to do
}
}
}
最后是我的main.xaml
<Page
x:Class="RedMedia.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Data="using:RedMedia.Modeles"
mc:Ignorable="d" >
<Page.Resources>
<DataTemplate x:DataType="Data:Video" x:Key="VideoDataTemplate">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock FontSize="16" Text="{x:Bind Title}" HorizontalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Page.Resources>
<Grid Background="Orange" Margin="0,20,20,0">
<ListView Name="lstview1" ItemsSource="{x:Bind Videos}"
ItemTemplate="{StaticResource VideoDataTemplate}">
</ListView>
</Grid>
</Page>
任何帮助将不胜感激
答案 0 :(得分:1)
首先,将所有课程公开。 然后,下一步,应按照以下步骤定义和实施您的视频收藏/列表:
public List<Video> Videos { get; set; }
注意:为了遵循MVVM或您使用的任何模式,我建议您重组代码,以便对视图模型使用绑定,而不是对代码进行隐藏。 在这种情况下,您还可以实现INotifyPropertyChanged并在定义VM属性时使用它。 然后,您的VM属性将如下所示:
private List<Video> _videos = new List<Video>();
public List<Video> Videos
{
get { return _videos; }
set
{
_videos = value;
OnPropertyChanged();
}
}
如果您决定使用该链接,也许该链接可能会有所帮助:https://blogs.msdn.microsoft.com/msgulfcommunity/2013/03/13/understanding-the-basics-of-mvvm-design-pattern/
答案 1 :(得分:0)
感谢您的建议。我确实更改了解决方案以实现MVVM。尽管提供的链接非常有帮助。我终于找到了逐步的教程,可以帮助我理解机械病。对于像我这样感兴趣的初学者:https://hangzone.com/data-binding-uwp-part-1/ https://hangzone.com/data-binding-uwp-part-2/