7

私は自分でそれを理解することができない間、助けを求めることを余儀なくされています. GUIが主に動的に生成されるWPF-XAMLデスクトップアプリケーションに取り組んでいます。

私の質問は、ListBox アイテムを使用した WrapPanel のスタイリングに関するものです。

私のユーザーコントロール (.xaml) からコードを見つけてください:

<DockPanel x:Name="xResultPanel">
  <ListView x:Name="bResultPanel" ItemsSource="{Binding ResultList, UpdateSourceTrigger=PropertyChanged}">
    <ListView.ItemTemplate>
      <DataTemplate>
        <Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}">
          <WrapPanel ItemWidth="140" Orientation="Horizontal">
            <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}">
              <ListBox.ItemTemplate>
                <DataTemplate>
                  <StackPanel Width="120" Margin="10" HorizontalAlignment="Left">
                     <Image />
                     <TextBlock />
                  </StackPanel
                </DataTemplate>
              </ListBox.ItemTemplate>
            </ListBox>
          </WrapPanel>
        </Expander>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
</DockPanel>

上記のコードは、行ではなく各項目を新しい行に表示する ListBox 項目を返します。 WrapPanel と ListBox に MinWidth、Width などを設定しようとしましたが、結果はありませんでした。

WrapPanel を強制的にコンテンツを水平方向に塗りつぶす方法について、関連するすべてのヒントを前もって感謝します。

4

1 に答える 1

12

問題は、WrapPanel子が 1 つしかないことListBoxです。これは、レイアウトが のItemsPanelテンプレートによって行われることを意味しListBoxます。

代わりにこれを試してください:

   <Expander Header="{Binding GroupName}" Style="{DynamicResource FeatureExpander2}">
      <ListBox x:Name="ListOfTiles" ItemsSource="{Binding VideoSamples}">
        <ListBox.ItemTemplate>
          <DataTemplate>
            <StackPanel Width="120" Margin="10" HorizontalAlignment="Left">
              <Image />
              <TextBlock />
            </StackPanel>
          </DataTemplate>
        </ListBox.ItemTemplate>
        <ListBox.ItemsPanel>
          <ItemsPanelTemplate>
            <WrapPanel />
          </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
      </ListBox>
    </Expander>
于 2013-06-03T12:03:25.667 に答える