WPF 重复元素

2023-12-20

我有一个 UserControl,它是一个按钮,具有某些特征,并且我有一个窗口,其中有几个“正常”样式的按钮。在同一个窗口上,我定义了一种样式来覆盖一些正常特征,并且我想要其中的一些(有点像键盘布局)。我拥有的是一个包含 30 行的 UniformGrid,如下所示:

<wft:TouchButton Style="{StaticResource smallButtonStyle}" Click="TouchButton_Click" Tag="1">1</wft:TouchButton>

<wft:TouchButton Style="{StaticResource smallButtonStyle}" Click="TouchButton_Click" Tag="2">2</wft:TouchButton>

<wft:TouchButton Style="{StaticResource smallButtonStyle}" Click="TouchButton_Click" Tag="3">3</wft:TouchButton>

其中,行与行之间唯一变化的是标签和内容值。有什么更好的方法来布局像这样的重复内容,其中样式和单击事件不必出现在每一行上?


更好的方法是在代码中创建一个数据对象来表示您想要在 UI 中出现的 30 个项目,例如:

class DataObject
{
  string Tag {get;set;}
  string Content {get;set;}
}

(我相信你能想出一个比这更好的名字!)。然后创建 30 个项目并将它们设置为 ItemsControl 的 ItemsSource:

List<DataObject> myObjects = new List<DataObject>();
// populate here
itemsControl.ItemsSource = myObjects

您的 ItemsControl 有一个用于呈现每个项目的 DataTemplate:

<ItemsControl x:Name="itemsControl">
  <!-- specify the panel that is the container for your items -->
  <ItemsControl.ItemPanelTemplate>
    <ItemPanelTemplate>
      <UniformGrid/>
    </ItemPanelTemplate>
  </ItemsControl.ItemPanelTemplate>
  <!-- specify the template used to render each item -->
  <ItemsControl.ItemTemplate>
    <DataTemplate>
       <wft:TouchButton Style="{StaticResource smallButtonStyle}"
                        Click="TouchButton_Click"
                        Tag="{Binding Tag}"/
                        Content="{Binding Content}">
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 重复元素 的相关文章

  • 如何知道 WPF 中的控件(或窗口)何时被渲染(绘制)?

    我需要将窗口的内容存储到图像中 保存并关闭窗口 如果我在 加载 事件上关闭窗口 则图像包含窗口 其中某些项目绘制正常 其他一些项目仅绘制了一半或扭曲 而其他项目则不在图像上 如果我设置一个计时器并在一定时间后关闭窗口 250 毫秒到 1 秒
  • 如何在不修改以前的文本的情况下更改 WPF RichTextBox 中的 FontFamily

    当您使用 RichTextBox 的 FontFamily 属性时 它会更改 FlowDocument 内整个内容的 FontFamily 就像执行 EditingCommands ToggleBold 这样的命令一样 它仅更改插入符号下的
  • 如何在 WPF 中设置窗口边框和标题栏的样式? [复制]

    这个问题在这里已经有答案了 我们正在开发一个 WPF 应用程序 它使用 Telerik 的控件套件 一切正常且看起来很好 不幸的是 我们最近需要替换所有对话框的基类 将 RadWindow 更改为标准 WPF 窗口 原因与本讨论无关 通过这
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus
  • 获取程序集中所有资源的列表

    我有一个文件夹Resources并想要获得一份包含所有内容的列表paths 如果我将它们设置为embedded resource 我可以通过 var resources Assembly GetExecutingAssembly GetMa
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 使用隧道而不是冒泡的路由命令

    我有一个自定义控件 MyControl 公开自定义命令 我想要家长Window能够调用此命令 以及所有MyControls应该对此做出反应 我已将命令添加到MyControl s CommandBindings集合 它还提供了CanExec
  • 如何在 WPF 中设置覆盖全局样式的特定控制元素设置?

    我通过应用程序范围的资源字典为应用程序中的按钮定义了全局样式 样式如下所示 来自另一个 SO 示例
  • C# - WPF - 组合框 - 将鼠标悬停在聚焦的组合框上时防止滚动(使用附加属性)

    背景 我需要防止ComboBox从将鼠标悬停在其上 聚焦时 时滚动和使用鼠标滚轮滚动 在这种情况下 我无法使用隐藏代码 因此我使用附加属性 我刚问这个问题 https stackoverflow com questions 76101509
  • 什么是WPF浏览器应用程序类型项目?

    什么时候应该使用 WPF 浏览器应用程序 该项目类型有什么用处 开发人员什么时候应该使用这个 WPF 浏览器应用程序是在浏览器中作为 XBAP Xaml 浏览器应用程序 运行的应用程序 您可以找到有关 XBAP 的用途和原因的更多信息her
  • WPF 日历控件按住鼠标

    所以我放弃了标准的 WPFCalendarVS2010 中全新 WPF 应用程序中的 MainWindow xaml 控件 如果我单击日历中的某一天 然后尝试单击应用程序的 关闭 按钮 则我必须在关闭按钮上单击两次才能接受单击 它的表现就好
  • 密码盒和 MVVM

    我们有以下场景 MVVM 用户界面 用户可以在其中输入密码 实际上是一个PasswordBox 应该做一些工作的服务器 服务器连接到一些需要身份验证的数据库 我已经读过这个关于MVVM中PasswordBox的问题 https stacko
  • 在 XAML 中设置依赖项属性时,为什么会在运行时绕过 .NET 属性包装器?

    我正在阅读 Adam Nathan 的书 WPF 4 Unleashed 第 82 页有以下警告 在 XAML 中设置依赖属性时 NET 属性包装器会在运行时被绕过 虽然 XAML 编译器依赖于 编译时的属性包装器 WPF 调用底层 直接在
  • WPF PRISM 事件订阅不会消亡

    我有一个 PRISM RegionManager 其中有几个区域 顶部的功能区区域和其下方用于我的视图的主要内容区域 相当基本 该应用程序以主要内容区域中的 主页 视图开始 当我单击功能区上的按钮时 我将第二个视图注入内容区域并在区域管理器
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 使用 WPF 网络浏览器以及带有斜体标签和阿拉伯文本的 HTML 时出现奇怪的字符

    我无法弄清楚这个 但我在下面做了一个简单的演示 当在 IE 或 Edge 中查看此页面时 它会正确呈现 我尝试过不同的编码 如 utf 16 Windows 1252 但没有成功 对我来说 看起来像是 WebBrowser 控件的问题 有人
  • 属性和依赖属性有什么区别

    依赖属性的创建方式与属性相同 依赖属性是否仅在创建自定义控件时使用 依赖属性和标准属性有很大不同 依赖属性提供的关键功能是支持binding and 动画片 如果您想使用Binding或模板绑定该属性需要是依赖属性 当对属性进行动画处理时
  • WPF - 全局样式?

    有没有办法为我的 WPF 应用程序设置全局样式 我希望做的是将样式应用于所有也有图像子项的按钮 嗯 有点 这是您可以做的一种包罗万象的方法 将以下元素放入您的 App xaml 中 所有按钮都会发生变化 除了您手动应用样式的按钮 但是 如果
  • 从代码中,如何创建对存储在附加属性中的对象的属性的绑定?

    我们有一个继承的附加属性来存储一个对象 在可视化树的更下方 我们希望从代码绑定到该对象的属性 通常我们像这样构建绑定的路径部分 var someBinding new Binding Path new PropertyPath Attach

随机推荐

  • AWS API Gateway -> Lambda 性能能否/将会得到改善?

    有人找到了 API Gateway 延迟问题的解决方案吗 通过简单的功能测试 API Gateway gt Lambda 交互 我经常看到 2 5 秒范围内的冷启动 而一旦 预热 900 毫秒 1 1 秒范围内的响应时间是典型的 我知道 T
  • 如何使用 R 和 ggplot 组合多条曲线并绘图?

    我想通过绘制多个来模拟色谱图dnorm曲线在ggplot与此类似 ggplot data frame x 0 aes x x mapply function mean sd col stat function fun dnorm args
  • 无法在 Android Studio 的终端中使用 git

    就像我的标题一样 尽管我在环境变量中添加了 Path 但我无法在 Android Studio 的集成终端中使用 git 请告诉我为什么 感谢大家的帮助 重新启动 Windows 后 我在终端中使用了 git 命令 D File gt gt
  • CMake cl.exe 无法编译简单的测试程序

    这是 CMake 输出 The C compiler identification is MSVC 16 0 30319 1 The CXX compiler identification is MSVC 16 0 30319 1 Ecli
  • 在mysql中设置好友列表

    我想在我的在线游戏中创建一个好友列表 我不确定如何设置或从哪里开始 添加朋友和接受朋友部分我可以处理 但我不知道如何在 mysql 和 php 中设置它 与每个用户连接的用户 朋友 列表或其他什么 如果您的友谊关系是对称的 您可以将每一对存
  • 使用 Razor 将 HtmlHelper 实例传递给另一个 MVC3 方法

    好的 我创建了以下两种方法 第一个是 HtmlHelper 上的扩展方法 第二个传递了帮助器的实例 并生成了复选框 我的实际示例与复选框无关 这只是解释我的问题的最简单方法 public static MvcHtmlString MakeB
  • Spring Rest Doc 不生成 html

    我跟着入门指南 http docs spring io spring restdocs docs 1 0 x reference html5 getting started对于Spring Rest Doc逐字逐句 但我无法从生成的片段中获
  • Sql 服务器的持续扫描 - 澄清吗?

    我读了这篇文章关于 http www scarydba com 2008 07 01 constant scan in execution plans 不断扫描但还是不明白什么时候会用到 人们评论作者说他的文章仍然不被理解 MSDN Con
  • 如何使用 HTML 5 只播放 Youtube 视频的音频?

    是否可以使用 HTML 5 和 Javascript 仅播放 YouTube 视频中的音频 2022 年更新 添加了用于演示的 webm 格式 您可以随时检查控制台日志并添加所需的所有格式 2021 年更新 您可以解析 Youtube HT
  • 如何创建一个覆盖层来阻止其下方 UI 的触摸事件?

    我使用了一层具有半透明背景的框架布局来创建叠加层 但此覆盖层不会阻止触摸事件与其下方的视图进行交互 应如何创建阻止所有触摸事件的覆盖层 如果覆盖层没有获取触摸事件 则事件将传递到底层视图 因此要阻止其下方视图中的触摸事件 请使覆盖层可触摸
  • 是否有任何类型的“预登录”事件或类似事件?

    在检查用户的凭据是否正确之前 我需要运行一些代码 目前我正在通过一个自定义事件侦听器来实现这一点 该事件侦听器在kernel request事件并检查请求的 URL 是否与 security yml 匹配check path环境 但这效率很
  • MVC缓存数据库图像

    我正在使用 MVC 4 创建一个网站 根据项目要求 图像存储在数据库中 我有一个绑定模型的视图 其中我有故事附带的图片的 ID 然后我得到图像 View img src style width 300px height 200px 控制器
  • 即使默认路由是用模块化风格实现的,Sinatra 也不知道这首小曲

    我正在运行 MacOS mavericksjruby我正在尝试写一个基本的modular sinatra应用程序 这是我的config ru好像 require app app run Sinatra Application 我像这样调用它
  • 正确放置 ASP .NET MVC 应用程序中的外部 javascript-per-view 文件

    在 ASP NET MVC 应用程序中 放置每个视图特有的外部 javascript 文件的正确文件夹是什么 大多数视图都需要我计划在外部文件中编写的 javascript 代码 但我不确定是否应该将它们放在视图旁边或 Scripts 文件
  • React Native 中的侧边栏菜单与反应导航

    我在用react navigation in React Native我想创建一个侧边栏菜单 它作为从左到右的覆盖层打开 并填充大约 80 90 的宽度 如果没有反应导航 这可以通过诸如react native side bar 但我想知道
  • 泛型类和静态字段

    有没有一种方法可以在多个不同的泛型类之间共享一个静态变量 我有课 class ClassA
  • 如何在 Apache POI 中设置固定列宽

    如何在 Apache POI 中设置固定列宽 我想将我的第一列设置为固定宽度 我尝试过使用sheet setColumnWidth 0 1000 cellStyle setWrapText true 设置它不反映的自动换行 public X
  • 使用内置本地数据库或隔离存储

    本地数据库现已内置于 Windows Phone 7 5 Mango 中 我正在考虑存储一些不相关的数据集合的场景 使用本地数据库非常简单 而使用独立存储则需要更多的自定义开发 还有一些替代解决方案 例如 FileDb 在芒果前的讨论中提到
  • Django-DB-Migrations:无法更改表,因为它有待处理的触发事件

    我想从 TextField 中删除 null True footer models TextField null True blank True footer models TextField blank True default 我创建了
  • WPF 重复元素

    我有一个 UserControl 它是一个按钮 具有某些特征 并且我有一个窗口 其中有几个 正常 样式的按钮 在同一个窗口上 我定义了一种样式来覆盖一些正常特征 并且我想要其中的一些 有点像键盘布局 我拥有的是一个包含 30 行的 Unif