0

私のリストビューはそれにバインドされたデータを表示しません助けを求めてください私はここに1つの要素だけを表示するための例を与えました私は私のコードの問題がどこにあるか知りたいです助けてください:(

ここに私のコードがあります:

<ListView ItemsSource="{Binding Path=MovieData}">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=MovieId}" Header="Movie Id" />
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Title}" Header="Title" />
                    <!-- Can Bind to complex subclass -->
                    <GridViewColumn Header="Movie(s)">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <ItemsControl ItemsSource="{Binding Path=MovieImage}">
                                        <ItemsControl.ItemsPanel>
                                            <ItemsPanelTemplate>
                                                <WrapPanel Orientation="Horizontal"/>
                                            </ItemsPanelTemplate>
                                        </ItemsControl.ItemsPanel>
                                    </ItemsControl>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <!-- Binding with data triggers -->

                    <!-- Simple binding -->
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Recommendation}" Header="Recommendations" />

                </GridView>
            </ListView.View>
        </ListView>

ここに私のクラスムービーがあります:

public class Movie
    {
        public int MovieId { get; set; }
        public string Title { get; set; }
        public BitmapImage MovieImage { get; set; }
        public string Recommendation { get; set; }
        public Movie() { }

        public void CreateMovie(int i, string T , string R)
        {
            MovieId = i;
            Title = T;
            Recommendation = R;
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.UriSource = new        Uri(@"http://pierre.chachatelier.fr/programmation/images/mozodojo-original-image.jpg");
            bi.EndInit();
            MovieImage = bi;


        }

    }

ここでは、テスト用に 1 つの要素を追加するだけです。

 public List<Movie> MovieData= new List<Movie>();
 Movie m = new Movie();
 m.CreateMovie(5, "d", "s");
 MovieData.Add(m);
4

1 に答える 1

0

コード ビハインドでビュー モデルアプローチを使用している場合:

public class MovieViewModel
{
   public ObservableCollection<Movie> MovieData { get; set; }

   public MovieViewModel()
   {
      //the code you post
      MovieData = new ObservableCollection<Movie>();
      Movie m = new Movie();
      m.CreateMovie(5, "d", "s");
      MovieData.Add(m);
   }
}

そしてあなたのウィンドウコンストラクターで:

private MovieViewModel vm;
public MyWindow()
{
   InitializeComponent();
   vm = new MovieViewModel();
   this.DataContext = vm;
}

編集:あなたのコメントを読みました。リストが変更されず、DB からのみ読み込まれる場合は、上記の私の回答を無視して、次のようにします。

  • ItemsSource="{Binding Path=MovieData}"XAML の ListView から削除します
  • リストビューに名前を付けるName="movieListView"

コードを次のように変更します。

List<Movie> MovieData= new List<Movie>();
Movie m = new Movie();
m.CreateMovie(5, "d", "s");
MovieData.Add(m);
movieListView.ItemsSource = MovieData;
于 2013-03-07T11:11:57.027 に答える