4

ItemsPanelTemplate が行 = 6 および列 = 7 の UniformGrid に設定されたリストボックスがあります。

リストボックスの項目でスペースを埋めたい。

辞書で定義されたデータテンプレートを使用しています。

テンプレートの外側のコントロールは、Horizo​​ntalAlignment=Stretch および VerticalAlignent=Strectch の Border ですが、テンプレートがリストボックス項目のスペースを埋めませんか?

何か案は?マルコム

4

2 に答える 2

12

これに対する答えは、データテンプレートではなくLISTBOXでHorizo​​ntalContentAligmentとVerticalContentAlignmentをStretchに設定することです。

于 2009-01-03T12:01:39.737 に答える
2

EDITED:追加情報を追加し、質問に答えました。

ListBoxItems他のアイテムと統一する興味深い方法はGrid、あなたのDataTemplate

例:

<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="Content"/>
          </Grid.ColumnDefinitions>
          <TextBlock Grid.Column="1" Text="{Binding Path=Name}">
        </Grid>
      </StackPanel>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

これで、すべてがTextBlocksレイアウト内で同じサイズになります。特定の幅/高さが設​​定されていない場合、子アイテムは使用可能なすべてのスペースを埋める必要があります。

または、コントロールの Width と Height を拡張するように設定することもできますが、同じ効果を実現するには Grid.SharedScopeSize を使用する方がよりエレガントな方法だと思います。

于 2008-12-30T08:11:31.523 に答える