.net - 如何使 DockPanel 填充可用空间

标签 .net wpf autosize 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 的最佳方法是什么拉伸(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/

相关文章:

c# - 如何确定 DynamoDB 表是否为空?

wpf - 确定托盘图标的位置

WPF - 在 StackPanel 中设置 Horizo​​ntalAlignment= 拉伸(stretch)到文本框

c# - MVVM App,窗口关闭期间方法的确切顺序是什么

WPF UserControl 设计时间大小

c# - 带有 AutoSize 的面板内的 FlowLayoutPanel 问题

javascript - Microsoft Jscript Angular 未定义

c# - 如何在逐字字符串中转义“?

c# - 使用空数组反序列化 XML 返回一个包含单个对象的数组

wpf - DataTemplates 在 WPF 中将点集合显示为椭圆