同步 WrapPanel 中的 WPF 控件宽度

2023-12-07

我有这个案例

<WrapPanel>
    <CheckBox>Really long name</CheckBox>
    <CheckBox>Short</CheckBox>
    <CheckBox>Longer again</CheckBox>
    <CheckBox>Foo</CheckBox>
    <Slider MinWidth="200" />
</WrapPanel>

我希望 WrapPanel 内的所有复选框具有相同的宽度。

添加以下内容就差不多达到想要的效果了

<WrapPanel.Resources>
    <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
        <Setter Property="MinWidth" Value="75" />
    </Style>
</WrapPanel.Resources>

但是,我不想硬编码特定宽度,而是让最大的 CheckBox 设置宽度(如果任何宽度 > 75,上面的方法也会失败)。

滑块是独立的,应允许大于复选框。

我不想使用网格(带有 IsSharedSizeScope),因为我不需要硬编码的列数。

本文提出了一个有趣的解决方案,但如果不创建自定义控件或使用 C# 代码来解决问题,那就太好了。

执行此操作的最佳方法是什么(最好仅在 XAML 中)?


我最初使用 IsSharedSizeGroup 来查看此问题,但遇到了使其动态应用于事物而不是显式包装项目的障碍。在这种情况下,从长远来看,在代码或其他基于代码的解决方案中创建 AttachedProperty 可能比仅使用 XAML 的方法更好。但是,要创建纯 XAML 解决方案,我们可以使用共享大小组ColumnDefinition 上的属性来共享每个元素的大小,然后使用设置共享大小范围WrapPanel 上的属性。这样做将使 WrapPanel 中具有相同 SharedSizeGroup 的所有内容共享其列宽和行高。要包装 ComboBox 以及可能当前不在 XAML 中但将添加到 WrapPanel 中的 ComboBox,我们可以创建一个 Style 并重新模板化 ComboBox,以基本上用 Grid 包装它。

<WrapPanel Grid.IsSharedSizeScope="True">
  <WrapPanel.Resources>
    <Style TargetType="{x:Type CheckBox}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type CheckBox}">
            <Grid Background="LightBlue">
              <Grid.ColumnDefinitions>
                <ColumnDefinition SharedSizeGroup="WrapPannelGroup" />
              </Grid.ColumnDefinitions>
              <CheckBox Style="{x:Null}"
                        IsChecked="{TemplateBinding IsChecked}">
                <!--Other TemplateBindings-->
                <CheckBox.Content>
                  <ContentPresenter />
                </CheckBox.Content>
              </CheckBox>
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>

  </WrapPanel.Resources>
  <CheckBox>Really long name</CheckBox>
  <CheckBox>Short</CheckBox>
  <CheckBox IsChecked="True">Longer again</CheckBox>
  <CheckBox>Foo</CheckBox>
  <Slider MinWidth="200" />
</WrapPanel>

在这里,我们将 WrapPannel 内没有样式的所有复选框重新模板化为由网格包围的复选框。然而,正因为如此,我们需要重新绑定我们想要维护的所有 CheckBoxes 属性。虽然这可能会变得很麻烦,但它也允许使用纯 XAML 方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

同步 WrapPanel 中的 WPF 控件宽度 的相关文章

  • ItemSource 中具有不同类型数据的 ListView 多行列标题

    继续this https stackoverflow com q 26712051 1997232问题 我想实现这种ListView 它应该有两件事 多行列标题 不同的数据类型通过绑定ItemsSource以不同方式显示 为了解决 1 我尝
  • WPF DataGrid 多选

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

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • VisualStateManager 和生成的转换

    正当我以为我明白的时候VisualStateManager 有些事情证明我错了 我正在使用 WPF 4 并且尝试简单地在鼠标悬停时放大某个项目 并在鼠标离开时将其缩小 我想我只需定义每个状态VisualStateGroup然后指定一个Vis
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 将 PDF 嵌入到 WPF 应用程序中

    我正在尝试在 WPF 应用程序中嵌入 显示 PDF 到目前为止 我已经尝试过这些解决方案 但没有成功 在 a 中显示 PDFWindowsFormsHost主持一个AxAcroPdf控制 类似于显示的内容here http hugeonio
  • Android:比 android:ellipsize="end" 更好的东西可以将“...”添加到截断的长字符串中?

    这个性质 https stackoverflow com questions 1666736 android textview automatically truncate and replace last 3 char of string
  • ListView ItemContainerStyle 模板

    我创建了用作 ListView 项目模板的样式 其中包含 CheckBox 和 TextBlock
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • 如何? WPF 窗口 - 最大化,不调整大小/移动

    我正在尝试创建一个已最大化打开的 WPF 窗口 无需调整大小 移动 在系统菜单中 也不在边框中 它应该一直最大化 除非用户最小化它 我尝试将 WindowState Maximized 和 ResizeMode CanMinimize 放在
  • 混合 MFC 和 WPF:模态对话框

    我使用 C CLI 界面层将 C WPF 对话框添加到现有的 C MFC 应用程序 我一切正常 只是我遇到了形式问题 例如 MFC 应用程序使用 ShowDialog 显示 WPF 对话框 按预期工作 该 WPF 对话框显示使用 DoMod
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • WPF 绑定 CompositeCollection 中的 MenuItem 不起作用

    我在将命令绑定到复合集合中的菜单项时遇到问题 这MenuItem是其一部分ContextMenu这是定义在UserControl Resources 问题是新标签的绑定不起作用 当我将 MenuItem 放置在复合集合之外时 它将起作用 有
  • 如何在 WinRT XAML Toolkit 折线图中设置轴边距?

    Answer 最后我用这个解决了我的答案 LineSeries MyChart Series 0 IndependentAxis new LinearAxis Minimum 1 Maximum 5 Orientation AxisOrie
  • 给图像着色[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试着色System Windows Controls Image 该图像包含透明区域 我只是想用颜色给非透明区域着色 例如 图
  • 使用资源定义厚度

    在 Windows UWP 应用程序项目中 我尝试通过分配给其厚度来定义厚度Left Top Right and Bottom特性
  • 是什么导致 WPF 打印机输出被光栅化?

    我在 WPF 中遇到了许多打印问题 其中正在打印的特定项目组合会突然触发打印机输出的光栅化 导致打印机输出丑陋且庞大 并可能导致打印每页需要 30 秒 我发现在控件上设置任何级别的不透明度之类的事情通常会触发此问题 我忘记了它还有什么作用
  • 居中时仅在文本的最后一行下划线

    我只想在某些文本的最后一行下划线 当文本换行到更多行时 仍然只有最后一行需要加下划线 我找到了这个解决方案 https stackoverflow com questions 15180827 advanced css challenge
  • 如何强制执行特定的 UserControl 设计

    我正在编写一个基本用户控件 它将由一堆其他用户控件继承 我需要对所有这些后代控件强制执行某种设计 例如 顶部必须有几个按钮以及一个或两个标签 后代用户控件区域的其余部分可以自由放置任何内容 最初 我认为我可以将一个面板放到 Base Use
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标

随机推荐

  • Magento 购物车/magento 外部的会话数据

    这可能会有点令人困惑 因为我已经尝试了一切来使这项工作成功 我想要的只是我的品牌网站 domain com 中的一个链接 该链接显示我的 magento 1 5 1 购物车 domain com shop 中的数量我很容易提取产品数据和导航
  • Velocity 模板 - 正则表达式

    我刚刚开始在新工作中使用速度 但我真的不喜欢我已经发现的东西 在这一点上 我实际上更喜欢 freemarker X 不管怎样 我正在尝试做一个正则表达式 我看到了这点 搜索 正则表达式 但这并不完全是我正在做的实现 我没有任何对java的访
  • 我想在 ping 主机后获取 ping 执行时间和结果字符串

    我想在 ping 主机后获取 ping 执行时间和结果字符串 我该怎么做 long currentTime System currentTimeMillis boolean isPinged InetAddress getByName se
  • Defer 块未执行

    我在操场上执行以下快速代码 func A print Hello guard 1 2 else return defer print World A 我期待看到 Hello World 相反 只有Hello被打印 为什么是这样 我缺少什么
  • Matlab中两点之间的距离

    我有 2 个向量 一个的尺寸为 200 2 另一个的尺寸为 3 2 它们都是笛卡尔坐标系中的点 我想计算前 200 个点和其他 3 个点之间的距离并将它们存储在向量中 我正在使用这样的函数 for i 1 cur for j 1 200 L
  • 带有 SpriteKit 的 iOS 通用设备应用程序,如何缩放所有视图的节点?

    我想做一个景观 app to be 普遍的 以便精灵节点根据运行应用程序的任何视图大小按比例缩放 我想要一个完全程序化解决方案 因为我不喜欢IB 我的游戏非常简单 我不需要任何类型的滚动或缩放 因此整个游戏将始终存在并占据整个视图 我正在寻
  • java将数组刷新到jList中

    好的 我有一个 JList 内容是通过数组提供的 我知道如何向数组添加元素 但我想知道如何刷新 JList 或者甚至可能吗 我试过谷歌 import java applet Applet import java awt import jav
  • 如何满足迭代器特征界限才能在这里使用 Rayon?

    我正在尝试使用 Rayon 的并行化 Ramer Douglas Peucker 线简化算法par iter代替iter extern crate num traits use num traits Float ToPrimitive ex
  • 属性访问器[重复]

    这个问题在这里已经有答案了 之间有什么根本区别吗 public string Name get return name set name value and public string Name get set 您可以访问内部字段 在第二种
  • 使用循环创建菱形图案

    我正在尝试编写一个程序 该程序读取整数并使用星号显示给定边长的实心菱形 例如 如果边长是4 程序应该显示 这就是我正在尝试做的事情 它正在执行 但我似乎无法为程序提供正确的空间来正确显示菱形形状 userInput int input Pl
  • 如果 json 字段具有特殊字符(如点),则访问 json 字段值

    如果我有一个 json 文件 其中的字段具有特殊字符 在我的例子中是点 我如何访问空手道中的字段值 例如有一个名为 example json 的 json 文件 field1 field2 value2 field 3 value3 如果我
  • 根 ViewController 内的 UIViewController 不旋转

    我有一个 UIViewController 我想将其作为独立层添加到整个应用程序的顶部 所以我尝试在应用程序委托中使用 self window addSubview viewController view 将其添加到 UIWindow 中
  • 将 9 位值作为字节写入 C 中的文件

    我有一个整数值从 0 511 最多 9 位 的数组 我正在尝试将其写入文件fwrite 例如 对于数组 257 258 259 Which is 100000001 100000010 100000011 I am trying to wr
  • 设置配置文件的过期时间

    是否可以设置配置文件的到期日期 我正在公司内部进行试用 我想设定expiration审判结束的日期 而不是仅仅一年之后creation日期 是否有可能 或者总是需要一年的时间creation date 另外 如果无法设置expiration
  • 无法从 json 对象访问数据

    我已将 json 数据结构存储在具有单列的数据框中 名为json 数据在R中 所以我的 json 文本以这种格式存储 row 1 results formatted address Sahibzada Ajit Singh Nagar Pu
  • 使用 Dumper 不会触发故障

    当运行这样的代码时 use strict print Dumper something 编译和运行时没有打印任何内容 也没有发生错误 为什么会出现这种情况 为什么不strict阻止此代码运行 尽管 Dumper 未知 但为什么运行时没有错误
  • 在docker容器内运行maven集成测试

    在运行集成测试之前 我使用 dockerfile maven 插件将我的 jar 文件移动到 docker 容器内 但是 mvn verify 命令构建图像并运行集成测试 结果测试失败 有人可以帮我在运行集成测试之前运行 docker 镜像
  • Python 中的节拍器脚本中的计时问题(使用 Pygame)[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个节拍器脚本 它可以为我提供音频反馈并将 MIDI 消息发送到合成器 我用Python 2 7 5 and Pygame 1 9 1 release在 Linux Mint 16 上 我对 MID
  • Pytest 日志记录忽略 pytest.ini 中的选项

    我正在运行一个测试 pytest capture no verbose rootdir testing testing tests docker test py from home user development 该测试检查某些容器是否正
  • 同步 WrapPanel 中的 WPF 控件宽度

    我有这个案例