c# - WPF ListBox 布局(同时考虑所有行的动态列宽)

标签 c# wpf xaml listbox columndefinition

有没有办法确保 Width="auto" 属性考虑列表中所有元素的 Width,而不是为列表中的每一行单独计算它列表?

<ListBox x:Name="listBox" HorizontalContentAlignment="Stretch" DockPanel.Dock="Top">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Grid Margin="0,0,0,5">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="auto" />
          <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock Text="{Binding Name}" />
        <TextBlock Grid.Column="1" Text="{Binding Value}" />
      </Grid>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

我尝试了这个,但由于每列的Name长度不同,每行Name列的Width是不同的。因此第二列从不同的 x 位置开始。

最佳答案

您可以使用SharedSizeGroup ColumnDefinition 中的属性如下所示:

<ColumnDefinition SharedSizeGroup="A"/>

另请看一下:Grid Size Sharing in WPF .

关于c# - WPF ListBox 布局(同时考虑所有行的动态列宽),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32609315/

相关文章:

c# - 传递给 MVC Controller 的 id 总是映射为 0

c# - 为什么我不能从异步代码中捕获异常?

c# - 如何读取文件 (Metro/WinRT)

wpf - 在 WPF 中,如何防止我的样式被覆盖?

c# - 通过 XAML 实例化 View 时 SimpleInjector.Container.Verify 中出现 NullReferenceException

xaml - 访问文本 block 的背景色

c# - 隐藏 RadWindow 的 'TitleBar'

c# - 使用 AMO 在维度上添加 SSAS ProcessAdd

C# WPF : Changing PlacementTarget of a ToolTip

c# - (UWP) mediaElement 导致错误 :unsupport video type or invalid file path