如何让 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
提供的所有可用空间的最佳方法是什么?
I'm trying the content of a shopping cart in an ItemsControl(ListBox)
. To do so, I've created the following 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>
When the items are displayed in my shopping cart however, the Name and Price TextBlocks
are sitting right beside one another, and there is an extremely large amount of whitespace on the right hand side.
Was wondering what the best method to force the DockPanel
to stretch to fill all the space made available by the ListItem
was?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将
DockPanel
的Width
绑定到ListBoxItem
的ActualWidth
:另一种选择:您可以重新定义 < code>ItemContainerStyle 以便水平拉伸
ListBoxItem
:Bind the
Width
of theDockPanel
to theActualWidth
of theListBoxItem
:Another option: you could just redefine the
ItemContainerStyle
so that theListBoxItem
is stretched horizontally:码头面板的好处是它们已经填满了所有可用空间。 LastChildFill 默认情况下为 true(但为了清楚起见,我在下面设置了它),因此只需不要在最后一个子项上设置 DockPanel 属性,它将填充可用空间。
The nice thing about dock panels is they already fill all the available space. LastChildFill is true by default (but I set it below for clarity), so just don't set the DockPanel attribute on the last child, and it will fill the available space.
DockPanel
是邪恶的。 使用 StackPanel/DockPanel 组合进行复杂布局的诱惑会导致“布局死胡同”。 使用网格:我几乎只使用网格,为“属于在一起”的每个元素块使用单独的网格
DockPanel
s are evil. Temptation to useStackPanel/DockPanel
combination for complex layouts leads to "layout dead ends". Use a Grid:I use
Grid
s almost exclusively, using a separate grid for each block of elements that "belong together"