是否可以在 WPF ItemsControl 中模拟边框折叠(ala CSS)?

2024-01-09

我正在 WPF 中设置项目的样式ListBox,并希望在每个项目周围放置边框。和BorderThickness设置为 1,例如,相邻项目之间的上下边框都会被绘制,因此看起来比侧边框“更厚”,如下所示:

生成这些的项目模板ListBoxItems is:

<DataTemplate>
  <Border BorderThickness="1" BorderBrush="DarkSlateGray" Background="DimGray" Padding="8 4 8 4">        
    <TextBlock Text="{Binding Name}" FontSize="16"/>
  </Border>
</DataTemplate>

我想“折叠”这些相邻的边界,例如,通过CSS http://htmldog.com/reference/cssproperties/border-collapse/。我知道BorderThickness可以单独定义左/右/上/下边框,但这也会影响第一个或最后一个项目的边框,这是不希望的。

有没有办法用 WPF 来实现这一点?的财产Border我失踪了,还是需要采用不同的方法来创建边界?


Use BorderThickness="1,0,1,1" and a DataTrigger它检查RelativeSource={RelativeSource Mode=PreviousData} being null to set BorderThickness="1,1,1,1":

<Window x:Class="CollapseBordersDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="239" Width="525">
  <Window.Resources>
    <x:Array x:Key="ListBoxItems" Type="{x:Type sys:String}">
      <sys:String>Alice</sys:String>
      <sys:String>Bob</sys:String>
      <sys:String>Colleen</sys:String>
    </x:Array>
    <DataTemplate x:Key="ListBoxTemplate">
      <Border x:Name="Border" BorderThickness="1,0,1,1" BorderBrush="DarkSlateGray" Background="LightGray" Padding="8 4 8 4">
        <TextBlock Text="{Binding}" FontSize="16"/>
      </Border>
      <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=PreviousData}}" Value="{x:Null}">
          <Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,1"/>
        </DataTrigger>
      </DataTemplate.Triggers>
    </DataTemplate>
  </Window.Resources>
  <Grid>
    <ListBox ItemsSource="{StaticResource ListBoxItems}" ItemTemplate="{StaticResource ListBoxTemplate}" HorizontalContentAlignment="Stretch" />
  </Grid>
</Window>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 WPF ItemsControl 中模拟边框折叠(ala CSS)? 的相关文章

  • WPF 动画:如何使其滑入?

    所以我刚刚进入动画领域 我想做一个 滑出 动画 我成功地做到了 但现在我希望它通过单击同一个按钮滑入 就像我单击它 它滑出 然后我希望当我再次单击它时它滑回 后面没有任何代码 所以只需通过 xaml 这是 XAML
  • Prism 应用程序中的数据模型位于何处?

    我无法将数据模型放置在 Prism 应用程序中的何处 大多数 如果不是全部 数据将来自网络服务 并且每个模块的网络服务都是唯一的 不幸的是 有些对象需要共享 例如人员 用户对象 我真的很困惑是否将这些服务直接添加到模块中 以便每个服务真正独
  • XAML - 带有触发器/参数的通用文本框样式?

    我希望能够拥有一个通用样式模板 可以根据布尔值切换文本框的颜色 但我不想为每个文本框创建独特的样式 我该怎么做呢 我在下面放置了一些示例代码 我希望它如何工作 三个文本框 均具有不同的绑定 但尝试使用相同的模板基于布尔值选择红色或绿色 Th
  • WPF 通知获取属性的 PropertyChanged

    我有INotifyPropertyChanged实施使用CallerMemberName public event PropertyChangedEventHandler PropertyChanged protected virtual
  • 使用 MVVM 在 WPF 中进行 COMBOBOX 过滤

    我正在使用 WPF mvvm 方法开发一个应用程序 我有一个要求 必须在组合框中显示项目列表以供选择 基于一些标志 我需要从组合框中过滤掉一些项目以供选择 我尝试使用两种不同的项目源 一个具有完整列表 另一个具有过滤列表 并基于我想要更改项
  • 在 WPF 中处理第二个 UI 线程

    我有一个长时间运行的进程在我的 UI 线程上运行 我无法离开 UI 线程 相反 我尝试创建第二个具有等待动画的 UI 线程 这是我用来创建第二个 UI 线程的代码 Private busyThread As Thread Private w
  • 有没有办法判断当前屏幕是否支持触摸? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以让我的 c wpf 程序知道用户是否有触摸屏 https stackoverflow com questions 5673556 is it possible to let my c shar
  • WPF ValueConverter 错误处理的最佳实践是什么?

    应该实现两个功能 我想知道我需要对输入进行什么类型的验证以及如何管理错误 Public Function Convert ByVal value As Object ByVal targetType As System Type ByVal
  • 传递给命令 WPF 的多个参数[重复]

    这个问题在这里已经有答案了 我有以下层次结构 abstract class TicketBase public DateTime PublishedDate get set class TicketTypeA TicketBase publ
  • WPF;单击 ListView 中的空白区域时如何取消选择所有选定的项目

    当我有几个 甚至一个 selected items我按简单click在我的空白处ListView 空白 非行 我想取消选择所有选定的项目 这是我取消选择所有项目的功能 private void DeselectAllListViewItem
  • 如何从页面级别获取父框架?

    我有一个带有框架和几页的窗口 加载窗口时 框架导航到欢迎页面 当我单击欢迎页面内的按钮时 我希望父框架导航到另一个页面 为此 我需要从页面级别访问父框架 但我不知道如何执行此操作 我尝试了下面的代码 但它返回 null private vo
  • 如何在 WPF 中实现虚线或点线边框?

    我有一个ListViewItem我正在申请Style到 我想把灰色虚线作为底部Border 我怎样才能在 WPF 中做到这一点 我只能看到纯色画笔 这在我们的应用程序中效果很好 允许我们使用真正的边框而不是乱用矩形
  • 重写 WPF 工具包图表中的 DataPointStyle

    我想覆盖DataPointStyle of the LineSeries在我的 WPF 工具包中Chart
  • 如何在Wpf中的用户控件中调用MahApps Metro对话框

    当我尝试调用 MahApps Metro 对话框时 我在传递值时遇到错误 在传递参数时调用对话框控制时我需要传递 Metrowindow 参数 但我需要在用户控件中调用它 下面是当我需要对话框控制时我将调用的方法 public async
  • 列表视图上的 TextBlock:如何忽略 TextBlock 中的点击并让列表视图处理它们

    我有一个显示大量信息的列表视图 但是当它为空时 我想在其上覆盖一个文本块 上面写着 没有要显示的信息 或 bla bla bla 添加信息 列表视图设置为响应鼠标单击 但现在如果我单击文本块 这些事件将路由到文本块 我怎样才能让这些事件转到
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • WPF HierarchicalDataTemplate 不会在属性更改时更新 ItemsSource

    这是一些 XAML
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • VisualStateManager 和生成的转换

    正当我以为我明白的时候VisualStateManager 有些事情证明我错了 我正在使用 WPF 4 并且尝试简单地在鼠标悬停时放大某个项目 并在鼠标离开时将其缩小 我想我只需定义每个状态VisualStateGroup然后指定一个Vis

随机推荐

  • 如何根据阈值改变字体颜色

    我有一个要求 比如如果阈值大于 6 则文本颜色应显示为红色 在 5 6 之间 文本颜色应更改为黄色 我在第一个要求 iif fields My column value gt 6 red Black 的文本框字体颜色属性中尝试了这个表达式
  • 最有效的方法...唯一的随机字符串

    我需要有效地将 5 个字符的随机字符串插入数据库 同时确保它是唯一的 生成随机字符串不是问题 但目前我正在做的是生成字符串 然后检查数据库是否已经存在 如果存在 我会重新开始 有没有更有效的方法来完成这个过程 请注意 我不想使用 GUID
  • 如何在 keydown 中停止按键事件

    我怎样才能停下来keypresskeydown 处理程序中的事件 即使从 keydown 中也无法停止按键 它们都是非常独立的事件 您可以做的是在读取字符后取消按键 按键 这是我只允许在文本框中输入字母和数字的方法 jQuery urlBo
  • Nuxt Vue 中的 Splidejs

    有没有人尝试过在 Nuxt 中使用 Vue 解决方案作为插件或模块 我在尝试以正确的方式做到这一点时遇到了很多挑战 我正在尝试将 Splide Vue 滑块从 NPM 导入 Nuxt 通过 NPM 安装它后 如何将其导入插件中的 splid
  • “->”(箭头运算符)和“.”有什么区别Objective-C 中的(点运算符)?

    在 Objective C 中 通过使用访问类中的变量有什么区别 gt 箭头运算符 和 点运算符 是 gt 用于直接访问 vs 点 不是直接的吗 gt 是传统的 C 运算符 用于访问指针引用的结构的成员 由于 Objective C 对象
  • 在 Safari 中隐藏文本区域调整大小手柄

    我在应用程序中使用文本区域组件 并动态控制它们的高度 当用户键入时 只要有足够的文本 高度就会增加 这在 IE Firefox 和 Safari 上运行良好 然而 在 Safari 中 右下角有一个 手柄 工具 允许用户通过单击和拖动来调整
  • 如何将 dapper 与 ASP.Net core Identity 结合使用?

    我有一个数据库 我尝试使用 dapper 和 Core Identity 来查询数据库 但我现在陷入困境 我正在使用 IdentityUser 界面中的用户 public class User IdentityUser 使用 dapper
  • 使用 SemanticResultKey 时出现 TargetInitationException

    我想建立我的语法来接受多个数字 当我重复数字 例如说 二十一 时 它有一个错误 所以我不断减少代码来找出问题所在 我为语法生成器编写了以下代码 string numberString one Choices numberChoices ne
  • Orchard 根据过滤的下拉选择创建投影或搜索

    我认为 我有一个简单的功能 我试图将其添加到我的 Orchard 1 6 站点 但我找不到任何有关如何执行此操作的教程或说明 我有一个名为 Office 的自定义类型 每个办公室都有一个名为 State 的自定义字段 指示办公室所在的州 实
  • 当块后代时关注 ListView 中的 EditText (Android)

    我有一个定制的ListView 每行都有一个EditText Buttons TextView 为了使 ListView 项目可点击 我保留了android descendantFocusability blocksDescendants
  • 如果字典键不可用,则返回默认值

    我需要一种方法来获取字典值 如果其键存在 或者简单地返回None 如果没有 然而 Python 提出了一个KeyError如果您搜索不存在的键 则会出现异常 我知道我可以检查密钥 但我正在寻找更明确的内容 有没有办法直接返回None如果密钥
  • 如何在 OSX 上从命令行打开 Visual Studio Code?

    The docs https code visualstudio com docs codebasics launching vscode提到一个名为的可执行文件code 但我不确定在哪里可以找到它 以便我可以将其放在我的路径上 我从 VS
  • div 边框半径问题(在 Firefox 和 Opera 上)

    正如你所看到的 有两张图片 首先 在 chrome 上 右侧有 Be en 和 Yorumlar 按钮 边框看起来非常好 但第二张照片显示 firefox和opera有边框半径的问题 我尝试做边框宽度 薄 边框 1px实心等 但它看起来一样
  • EC.element_to_be_clickable 和 EC.presence_of_element_ located 之间单击()元素的区别

    我在间歇性单击某个元素时遇到 TimeoutExceptions 我尝试过显式等待和 time sleep 它工作了一段时间 我一次又一次地遇到例外 我想了解这是否是由预期条件引起的 WebDriverWait self driver 40
  • 简单饼图:错误百分比未居中?

    我有一个 symfony 项目 我使用 bootstrap 作为样式 并且我想使用 Easy Pie Chart 作为仪表板页面 所以 在 base html twig 中 block stylesheets endblock block
  • 将任意 GUID 编码为可读 ASCII (33-127) 的最有效方法是什么?

    GUID 的标准字符串表示形式大约需要 36 个字符 这非常好 但也非常浪费 我想知道如何使用 33 127 范围内的所有 ASCII 字符以最短的方式对其进行编码 简单的实现会产生 22 个字符 只是因为128 bits 6 bits产量
  • 来自旋转 JSON 的 D3 多系列折线图

    这里有一个很好的多系列折线图示例http bl ocks org mbostock 3884955 http bl ocks org mbostock 3884955如果 tsv 数据被布置出来 我确信它会看起来像这样 date 20111
  • .NET 进程可以分配的最大内存

    垃圾收集器可以为 NET 进程分配的最大内存是多少 当我编译到 x64 时 Process GetCurrentProcess MaxWorkingSet 返回大约 1 4GB 但是当我编译到 AnyCPU x64 时 返回相同的数字 对于
  • 无法通过 shell 在 CentOS 7 上安装 phpMyAdmin

    yum y install phpmyadmin 出现错误 Error Package phpMyAdmin 4 4 15 10 2 el7 noarch epel Requires php zip Available php common
  • 是否可以在 WPF ItemsControl 中模拟边框折叠(ala CSS)?

    我正在 WPF 中设置项目的样式ListBox 并希望在每个项目周围放置边框 和BorderThickness设置为 1 例如 相邻项目之间的上下边框都会被绘制 因此看起来比侧边框 更厚 如下所示 生成这些的项目模板ListBoxItems