【问题标题】:WPF listbox alignmentWPF 列表框对齐
【发布时间】:2016-11-24 09:32:18
【问题描述】:

我正在从数据库中提取一些数据,并且我希望将这些数据放在沿列表框对齐的某种列中,但我总是让元素彼此相邻。

我有什么:

el1 el1
longEl2 longEl2

我想要什么

el1       el1
longEl2   longEl2

代码:

<ListBox Grid.Row="2" ItemsSource="{Binding lb}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>

                <CheckBox Grid.Column="0" Margin="10" Content="{Binding Name}" IsChecked="{Binding IsActive}"/>

                <TextBlock Margin="10" Grid.Column="1">test</TextBlock>

            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

【问题讨论】:

  • ColumnDefinition width=SomeValue 可能会对您有所帮助。或者你可以让你的网格和列表框HorizontalContentAlignment="Stretch",这样它就可以占据所有空间的大小
  • 已经试过了......它正在为每个加载的元素重新计算
  • 还是一样...stretch 好像没什么用,width 也是
  • 如何在列表框上拉伸水平内容对齐以及拉伸
  • @Norgul: Stretch 对于 ListBox 和 Grid 都可以,是的,horizontantcontentalignment 也设置为 strech

标签: c# wpf listbox


【解决方案1】:

使用 ListBox 或通常每个 ItemsControl 在内部为每一行包含网格并使每行中的网格列相等,您可以使用SharedSizeScope。您在控件上定义Grid.IsSharedSizeScope="True",并在数据模板中使用SharedSizeGroup="ColumnName" 命名网格列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-08
    • 2013-04-21
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    相关资源
    最近更新 更多