[UWP][XAML] ListView 子项不使用全宽

2023-11-22

我正在尝试显示绑定项目的列表。我已将数据模板自定义为网格,我希望右列(具有固定宽度)粘在屏幕的右侧,而第一列我想填充剩余空间。通常这工作正常,但是当我将此网格放入 ListView 中时,行为似乎发生了变化。下面是我的ListView代码:

    <ListView x:Name="LView" Background="Green" Width="{Binding ElementName=ExtPropPage, Path=Width}" ItemsSource="{Binding CurrentSensor.ExtendedProperties, Mode=TwoWay}" Margin="5" HorizontalAlignment="Stretch" VerticalAlignment="Center">
                <ListView.ItemTemplate>
                    <DataTemplate >
                        <Grid Background="BlueViolet" Width="{Binding ElementName=LView, Path=Width}" HorizontalAlignment="Center" >
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="100"/>
                            </Grid.ColumnDefinitions>
                            <Grid Grid.Column="0" Background="Blue" HorizontalAlignment="Stretch">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="*"/>
                                </Grid.RowDefinitions>
                                <TextBlock Grid.Row="0" FontWeight="Bold" FontSize="12" Text="{Binding KeyId, Mode=TwoWay, Converter={StaticResource ExtPropConverter}}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                                <TextBlock Grid.Row="1" FontWeight="Normal" FontSize="10" Text="{Binding JsonValue, Mode=TwoWay}" TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                            </Grid>
                            <StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right" BorderBrush="{x:Null}" Background="Red">
                                <Button DataContext="{Binding}" ToolTipService.ToolTip="Edit" Click="ButtonHandler" BorderBrush="DarkGray" FontFamily="Segoe MDL2 Assets" Content="&#xE70F;" Style="{StaticResource CircleButtonStyle}">

                                </Button>
                                <Button x:Name="DeviceCancelButton" ToolTipService.ToolTip="Delete" view:EventHandlers.Attach="Click" Click="DeleteExtProp" BorderBrush="DarkGray" FontFamily="Segoe MDL2 Assets" Content="&#xE74D;" Style="{StaticResource CircleButtonStyle}">

                                </Button>
                            </StackPanel>


                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
                
            </ListView>

我在几个元素的背景上添加了颜色,以便更好地了解一个控件的边界与另一个控件的边界的位置。到目前为止我所看到的是 ListView 扩展以填充整个屏幕宽度,这很棒,但是当涉及到列表视图(网格)中的项目时,第 1 列中的项目的长度有所不同(当超过1 个项目已填充),网格对空间的使用似乎取决于其中对象的宽度,而不是依赖于我使用过的事实Width="*"这应该告诉列扩展并填充可用空间,无论列本身有什么。

我做了很多搜索并找到了一个又一个与使用有关的答案HorizontalAlignment="Stretch"要么我在错误的地方使用它,要么我错过了其他东西。

注意:上面的代码并不一定表明是我尝试过的唯一解决方案,调整宽度和对齐方式的不同尝试将使这篇文章变得巨大,所以希望有人有一个答案,这不是我尝试过的结果没有成功。

谢谢您的帮助。

附:作为任何答案的额外奖励,我想覆盖“OnMouseOver”属性,以在将鼠标悬停在列表视图项上时停止背景的更改。当我悬停在这些之上时,不需要发生任何特别的事情。


一位朋友帮助我找到了这个,这意味着这个问题现在是重复的,因为它是同一件事:

ListViewItem 不会拉伸到 ListView 的宽度

为了清楚起见,这里是解决我的问题的外卖代码:

    <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
    </ListView.ItemContainerStyle>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[UWP][XAML] ListView 子项不使用全宽 的相关文章

  • 当用户快速滚动时,如何延迟列表适配器中视图的加载

    我的列表视图中有从互联网下载的图像 我想在 getView 中添加一些内容 以便在用户快速滑动 滚动时它不会下载图像 我怎样才能开始这样做呢 您可以按照以下步骤延迟 ListView 中视图的加载 首先 你应该让你的ListView对象和Y
  • 应如何在 WinForms GUI 控件和客户端类之间同步数据?

    什么方法被认为是保持 GUI 控件内的数据结构与应用程序维护的数据结构同步的 标准 例如 在 WinForms 中 如果创建一个 ListView 实例 而不是将其指向表示要出现在列表中的项目的数据结构 则必须以编程方式实例化 ListVi
  • android:如何使用行中的删除按钮从ListView中删除行

    我知道有很多线程或多或少有相同的主题 但没有一个线程涵盖我的情况 我使用自定义行用自定义 CursorAdapter 填充 ListView 我的 ListView 有两种状态 第一个状态仅包含行中的文本 第一个状态仅包含行中的文本 第二种
  • 我有一个仅显示图标和标题的列表 无 JQM 格式 如果屏幕宽度低于 320 px 我想将列表转换为 JQM ul list 我可以通过 Jquery 添加属性 但是当我调用 menuList listview refresh 时我收到以下错
  • 包含详细信息的列表视图

    我有一个显示客户端列表的Listview 我在Listview中添加了一个onClickListner 以便我可以获得单击客户端的详细信息 ListView l ListView findViewById R id jl l setOnIt
  • Android - 我无法刷新/重绘 ListView

    我有一个列出一组书籍的 ListView 用户可以添加一本新书 然后使用 onActivityResult 方法再次显示该书集 在添加一本新书后 我一直在尝试几个小时来刷新这套书 但根本没有运气 这是我尝试过的代码 public class
  • getItemAtPosition() 未在列表视图中返回值

    我创建了一个自定义基本适配器类 用图像和文本填充列表视图 类的代码如下 public class ViewAdapter extends BaseAdapter private Activity activity private Strin
  • Android:动态更改Listview中的图像

    我有一个由以下 xml 定义的列表视图 我需要切换图像当用户单击任何行时 在运行时会出现在列表中 我怎样才能实现这个目标 非常感谢任何帮助 谢谢 list item xml
  • Android 中的列表视图到 pdf

    我有一个自定义列表视图 我想从整个列表视图制作pdf 我参考了很多帖子并实现了下面的代码 该代码将我的列表视图转pdf 但问题是它不包含整个列表视图项目 pdf 中仅提供前几项 我的转换函数列表视图转pdf is fab setOnClic
  • Android:如何检测双击?

    我在实现双击时遇到问题 好吧 我实施了onGestureListener我有gestureDetector 但我不确定问题出在哪里 这是我的代码 public class home extends TabActivity implement
  • StableArrayAdapter 与 ArrayAdapter

    我正在看这个ListView教程 列表视图教程 http www vogella com tutorials AndroidListView article html 我想知道创建自己的更好ArrayAdapter 而不仅仅是使用和Arra
  • 从 android 发送查询到数据库

    我在 Android 上有一个体育运动列表视图 有没有办法将带有所选选项的 MySQL 查询发送到remote同一张表中包含有关该运动的更多信息的数据库 就像 从桌子上选择足球 提前致谢 扎克 Android 的常见数据库类型是 sqlit
  • Android - 如何创建可点击的列表视图?

    我想让列表视图中的所有列表项打开到一个新页面 因此每个列表视图项目都打开到一个我可以使用的新黑色页面 我根本不知道如何实现这个 我已经连续搜索了几个小时 但找不到解决方案的答案 如果有人能够展示和 或解释如何执行此操作而不是提供链接 我们将
  • 删除 android ListView 的底部分隔线

    我有固定的高度ListView 它在列表项之间有分隔线 但它还在最后一个列表项之后显示分隔线 有没有办法在最后一项之后不显示分隔线ListView 只需添加android footerDividersEnabled false 到您的 Li
  • 在Android中添加ListView子项文本

    我创建了一个 RSS 阅读器 可以在列表视图中列出项目 我还想在每个项目下面都有一个日期 但我不知道该怎么做 我需要某人的帮助才能使子项文本显示从 RSS 提要检索到的 pubDate 这是我的班级代码 public class RSSRe
  • WPF;单击 ListView 中的空白区域时如何取消选择所有选定的项目

    当我有几个 甚至一个 selected items我按简单click在我的空白处ListView 空白 非行 我想取消选择所有选定的项目 这是我取消选择所有项目的功能 private void DeselectAllListViewItem
  • 当我单击特定视图时,如何获取列表视图中项目的位置?

    正如标题所示 当我单击项目内部的视图时 我想知道该项目的确切位置 假设我在 ArrayAdapter 的 getView 方法中有以下代码 holder new ViewHolder holder iconAction ImageView
  • Android 在列表视图中添加视图

    文档说不支持 listViewObj addView 方法 我想将视图添加到列表末尾而不刷新它 如何做到这一点 您可以通过以下方式向 ListView 添加页脚 View footerView getLayoutInflater infla
  • 检查从 arrayadapter 获取的复选框

    我有标题清单 CheckBox 我想控制默认检查哪一个 所以我试图获得正确的视图并检查它 但由于某种原因它不起作用 知道为什么吗 form checkbox item xml
  • jQuery Mobile:$(...).listview 不是函数

    我正在尝试在 UL 中动态插入 LI 元素后刷新 jQuery Mobile 中的列表视图 每当我尝试 myUL listview refresh 在控制台上我收到错误 未捕获的类型错误 listview 不是函数 我该如何解决这个问题 确

随机推荐