0

ModernUI インターフェイスを使用して WPF アプリケーションを作成しています。その一種のフォト ギャラリーです。画像はいくつかのフォルダーに保存され、データベースの適切なレコードに従って取得されます。したがって、ViewModel はデータベースから情報を取得し、「URI」列を Image の Source プロパティにバインドします。

私がする必要があるのは、これらの画像をグリッドのようにビューに配置することです。画像の幅と高さは一定です。ここでの課題は、実行前に要素の数がわからないため、Grid を動的に作成する必要があることです。グリッドの幅に応じて列数が自動的にカウントされるとよいでしょう。たとえば、画像の幅は 200、右マージンは 50 で、グリッド (または親要素、気にしないでください) の幅が 800 の場合、3 列になります。ただし、列数を明示的に設定できます。最も重要なことは、画像がグリッドのように見えるように配置することです。

ViewModel は要素の ObservableCollection を返します (必要な構造に変更できます)。テンプレートが定義された XAML コードには本当に感謝しています。

4

2 に答える 2

2

おそらく、grid.column および grid.row プロパティを動的に設定することができます。グリッドの可能な幅と高さを確認して、配置できる画像の量を指定します。次に、グリッドの行と列を定義し、画像を追加します。

         for(amount of images) // define rows and colums
         {
            ColumnDefinition colDef = new ColumnDefinition();
            colDef.Width = new GridLength(specifiedwidth);
            yourgrid.ColumnDefinitions.Add(colDef);

            RowDefinition rowDef = new RowDefinition();
            rowDef.Height = new GridLength(specifiedheight);
            yourgrid.RowDefinition.Add(rowDef);
         }

         for(amount of images) // add your images to the grid
         {
            yourgrid.Children.Add(yourimage);

            Grid.SetColumn(yourimage, index); //set column index
            Grid.SetRow(yourimage, index); // set row index
         }
于 2013-11-19T07:55:44.240 に答える