2

コレクションを返してリストボックスに割り当てようとしていますが、次のエラーが発生しています

「タイプ 'System.Collections.Generic.List を 'System.Collections.ObjectModel.ObservableCollection に暗黙的に変換できません」

私はWPFとC#が初めてで、これを処理する方法がわかりません。

私がやりたいことは、My Videos フォルダー内のすべてのビデオを、メディア要素コントロールを含むリストボックスにロードすることだけです。

どのような方法で返すのが正しいでしょうか?

コード:

public class Video 
{
    public Uri SourceUri { get; set; }

    public static ObservableCollection<Video> LoadVideoInfo()
    {
        List<Video> videoresult = new List<Video>();

            foreach (string filename in
            System.IO.Directory.GetFiles(
            Environment.GetFolderPath(
            Environment.SpecialFolder.MyVideos)))

            videoresult.Add(new Video { SourceUri = new UriBuilder(filename).Uri });

        return videoresult;
    }
}

XAML:

<ListBox x:Name="VideoList" ItemsSource="{Binding }" Width="auto" Height=" auto" Margin="5,0,5,2" Grid.ColumnSpan="2" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <MediaElement Source="{Binding SourceUri}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
4

4 に答える 4

4

あなたのメソッドは a を返すと言いますがObservableCollection<Video>、あなたは a を返しますList<Video>。を作成しObservableCollection<Video>て返します。

return new ObservableCollection<Video>(videoresult);

複数の DataContext:

ContextModel

public class ContextModel
{
    public ObservableCollection<Video> Videos { get; set; }
    public object OtherContext { get; set; }
}

メインウィンドウ

this.DataContext = new ContextModel()
{
    Videos = Video.LoadVideoInfo(),
    OtherContext = LoadOtherContext()
};

メイン ウィンドウ Xaml

<ListBox x:Name="VideoList" ItemsSource="{ Binding Videos }" />
<ListBox x:Name="OtherListBox" ItemsSource="{ Binding OtherContext }" />
于 2013-10-09T07:14:05.483 に答える
0

return ステートメントでは、次のコードを使用します。

return (new ObservableCollection(videoresult));
于 2013-10-09T07:14:46.030 に答える
0

return type を変更する必要があります。戻り値の型は List ではなく ObservableCollection にする必要があります。

于 2013-10-09T07:16:51.167 に答える
0

これを試して

ObservableCollection<Video> videoresult = new ObservableCollection<Video>();
于 2013-10-09T07:18:11.827 に答える