0

これは XAML です。

<ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding Path=ScenarioName}" Header="Scenario Name" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=ScenarioType}" Header="Scenario Type" />
                <GridViewColumn Header="Well names" Width="175">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <ItemsControl ItemsSource="{Binding Path=Wells}">
                                    <ItemsControl.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <WrapPanel Orientation="Vertical"/>
                                        </ItemsPanelTemplate>
                                    </ItemsControl.ItemsPanel>
                                    <ItemsControl.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel>
                                                <!--<TextBlock Text="{Binding}"/>-->                                                  
                                                    <Button Width="60" Margin="0 0 0 3">Test 1</Button>

                                                </StackPanel>
                                        </DataTemplate>
                                    </ItemsControl.ItemTemplate>
                                </ItemsControl>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn DisplayMemberBinding="{Binding Path=StartPeriod}" Header="Start period" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=EndPeriod}" Header="End period" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=Lagged}" Header="Lagged" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=Detrended}" Header="Detrended" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=MinimumMonths}" Header="Length of continuous months" />
                <GridViewColumn DisplayMemberBinding="{Binding Path=CorrelatedWells}" Header="Correlated wells" />
                    <GridViewColumn Header="Excluded Wells">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel>
                                    <ItemsControl ItemsSource="{Binding Path=ExcludedWells}">
                                        <ItemsControl.ItemsPanel>
                                            <ItemsPanelTemplate>
                                                <WrapPanel Orientation="Vertical"/>
                                            </ItemsPanelTemplate>
                                        </ItemsControl.ItemsPanel>
                                        <ItemsControl.ItemTemplate>
                                            <DataTemplate>
                                                <StackPanel>
                                                    <TextBlock Text="{Binding}"/>
                                                </StackPanel>
                                            </DataTemplate>
                                        </ItemsControl.ItemTemplate>
                                    </ItemsControl>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
        </ListView.View>
    </ListView>

そして、それは次のようになります:

http://tinypic.com/view.php?pic=xpse8n&s=6

問題は、ウェル名の下に「Test1」ボタンを簡単にグループ化できるかどうかです (たとえば、5 つの項目のグループで)。ウェル名のボリュームが非常に大きくなる可能性があり、水平方向または垂直方向のラッピングが役に立たないためです。

どうもありがとう、エリアス

4

3 に答える 3

0

いつでも ViewModel に新しいプロパティを追加できます

 public IEnumerable<Well> SomeWells
 { get { return Wells.Take(5); }

代わりにこれを使用するように ItemsSource バインディングを変更します。

MSDNの例

于 2012-09-27T13:49:47.993 に答える
0

ListBox を使用して、ユーザーが次のようなボタンをスクロールできるようにすることができます。

<GridViewColumn Header="Well names" Width="175">
     <GridViewColumn.CellTemplate>
           <DataTemplate>
                <ListBox>
                     <ListBox.ItemTemplate>
                          <DataTemplate>
                               <Button></Button>
                          </DataTemplate>
                     </ListBox.ItemTemplate>
                </ListBox>
           </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>
于 2012-09-27T13:59:36.993 に答える
0

あなたが何を求めているのか100%確信が持てませんが、5つのボタンが連続して、5つのボタンごとに次の行に自動的にラップするようなものが必要なようです。

で動作させるにはWrapPanel、パネルにWidthボタンの幅の 5 倍の a を指定して、5 つのボタンを描画し、次の行に折り返す必要があります。

<ItemsPanelTemplate>
    <WrapPanel Width="300" Orientation="Vertical"/>
</ItemsPanelTemplate>

ボタンの幅が事前にわからない場合の別の方法はUniformGrid、5 列で a を使用することです。また、行数をコレクションに予想されるよりも大きな値に設定する必要があると思います

<ItemsPanelTemplate>
    <UniformGrid Columns="5" Rows="100" />
</ItemsPanelTemplate>

行数を定義するもう 1 つの方法は、必要な行数を含むデータ モデルでプロパティを公開し、それに Rows プロパティをバインドすることです。

<ItemsPanelTemplate>
    <UniformGrid Columns="5" Rows="{Binding RowCount}" />
</ItemsPanelTemplate>

UniformGrid.Rowsが DependencyProperty であるかどうかは思い出せませんが、そうでない場合は、AttachedPropertyバインドできるプロパティを変更する代わりに を作成できUniformGrid.Rowsます (例については、グリッドの行と列の添付プロパティのこのコードを参照してください) 。

于 2012-09-27T14:34:46.367 に答える