我正在尝试 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
的最佳方法是什么拉伸(stretch)以填充 ListItem
提供的所有空间曾是?
最佳答案
DockPanel
s是邪恶的。使用 StackPanel/DockPanel
的诱惑复杂布局的组合会导致“布局死胡同”。使用网格:
<Grid>
<TextBlock HorizontalAlignment="Left"
...
<TextBlock HorizontalAlignment="Right"
...
/Grid>
我用
Grid
s 几乎完全是,对“属于一起”的每个元素 block 使用单独的网格
关于.net - 如何使 DockPanel 填充可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1080479/