DockPanelを利用可能なスペースに埋める方法 質問する

DockPanelを利用可能なスペースに埋める方法 質問する

ショッピング カートの内容を で試していますItemsControl(ListBox)。そのために、次のものを作成しましたDataTemplate

<DataTemplate x:Key="Templates.ShoppingCartProduct"
              DataType="{x:Type viewModel:ProductViewModel}">
    <DockPanel HorizontalAlignment="Stretch">
        <TextBlock DockPanel.Dock="Left"
                   Text="{Binding Path=Name}"
                   FontSize="10"
                   Foreground="Black" />
        <TextBlock DockPanel.Dock="Right"
                   Text="{Binding Path=Price, StringFormat=\{0:C\}}"
                   FontSize="10"
                   Foreground="Black" />
    </DockPanel>
</DataTemplate>

しかし、商品がショッピングカートに表示されると、名前と価格がTextBlocks隣り合って表示され、右側に非常に大きな空白スペースができます。

DockPanelによって利用できるスペースをすべて埋めるために を強制的に伸ばすための最良の方法は何でしょうかListItem?

ベストアンサー1

WidthのをDockPanelの にバインドします:ActualWidthListBoxItem

<DockPanel Width="{Binding ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}">
...

別のオプション:が水平方向に引き伸ばされるItemContainerStyleように を再定義することもできます。ListBoxItem

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>

おすすめ記事