ItemTemplate 和 ItemContainerStyle 不能一起使用吗?

2024-02-03

我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl:-

<ItemsControl ItemsSource="{Binding LogEntries}"
              ItemTemplate="{StaticResource itemTemplate}"
              ItemContainerStyle="{StaticResource itemContainer}" />

然而,ItemContainerStyle 似乎被忽略了(但如果我删除 ItemTemplate,它确实可以工作)。

项目模板相当复杂,并且在许多不同的视图中使用。在一个特定视图中,我需要更改列表项的间距和背景颜色,因此我还尝试应用 ItemContainerStyle,如下所示:-

<Style x:Key="itemContainer"
       TargetType="ContentPresenter">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border x:Name="itemBorder"
                        Margin="4,0,4,4"
                        Background="#666666">
                    <ContentPresenter Content="{Binding}" />
                </Border>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

我有点惊讶你不能同时应用两者,除非我错过了一些东西?我假设 ItemContainerStyle 实际上只是项目内容的“包装器”,无论项目的内容是否模板化?


The ItemContainerStyle is not任何东西的“包装”......它是一个Style. You can设置两个Style物品容器的and the ItemTemplate属性,但你的问题是因为你试图设置ContentTemplate的财产ContentPresenter在你的Style这会被值覆盖ItemTemplate。 (请参阅评论部分中的@Clemens 链接)。

解决这个问题的一种方法是使用ListBox将其数据项包装在ListBoxItems 并提供一个值Template属性而不是ContentTemplate。 (当然你可以添加一个Style删除它的边框,使其看起来像ItemsControl)。在这种情况下,ItemContainerStyle将影响ListBoxItem反而。但是,您必须了解其中的区别。

The ItemContainerStyle将影响ListBoxItem,而ItemTemplate用来定义里面的数据对象。因此,定义一个Border in the ItemContainerStyle并定义数据在中的外观ItemTemplate。尝试这个:

<ListBox ItemsSource="{Binding Items}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Border Margin="4,0,4,4" Background="#666666">
                            <ContentPresenter Content="{Binding}" />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ItemTemplate 和 ItemContainerStyle 不能一起使用吗? 的相关文章

  • 如何从页面级别获取父框架?

    我有一个带有框架和几页的窗口 加载窗口时 框架导航到欢迎页面 当我单击欢迎页面内的按钮时 我希望父框架导航到另一个页面 为此 我需要从页面级别访问父框架 但我不知道如何执行此操作 我尝试了下面的代码 但它返回 null private vo
  • WPF 组合框如果只有 1 项则自动选择

    我有一个组合框 我绑定到一个可观察的集合 它会发生变化 根据选择的公司 并且大量公司将有一个帐户 项目 因此我想知道制作组合框的最佳方法是什么如果 ItemsSource 中只有 1 个项目 则设置 SelectedItem 否则将其保留为
  • WPF - 检测鼠标按下一段时间

    检测鼠标按钮何时在特定元素上按住特定时间段的最佳方法是什么 感谢您的提示 我创建了一个附加属性以避免任何代码隐藏 using System using System Windows using System Windows Threadin
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • 如何在wpf中打印屏幕截图

    首先我英语说得不太流利 反正 我正在尝试这样做 然而这还不是第三天 我现在正在做的是屏幕捕获后的程序屏幕打印 我参考这段代码 https social msdn microsoft com Forums windows en US 0623
  • 即使在 GC Collect 和 WaitForPendingFinalizers 之后,窗口对象在关闭后也未释放?

    这是一个简单的测试应用程序 可帮助了解 WPF 内存使用情况 我想了解的关键是为什么MainWindow即使在关闭并等待 GC 完成之后 仍然被引用并且它的内存没有被释放 参见下面的代码清单 文本 MainWindow Finalizer
  • 重写 WPF 工具包图表中的 DataPointStyle

    我想覆盖DataPointStyle of the LineSeries在我的 WPF 工具包中Chart
  • 无法使用 DialogResult

    我尝试使用DialogResult检查一个Messagebox s 是 否 取消 我正在使用以下代码 我没有看到任何问题 DialogResult dlgResult MessageBox Show Save changes before
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 将 PDF 嵌入到 WPF 应用程序中

    我正在尝试在 WPF 应用程序中嵌入 显示 PDF 到目前为止 我已经尝试过这些解决方案 但没有成功 在 a 中显示 PDFWindowsFormsHost主持一个AxAcroPdf控制 类似于显示的内容here http hugeonio
  • ListView ItemContainerStyle 模板

    我创建了用作 ListView 项目模板的样式 其中包含 CheckBox 和 TextBlock
  • 如何在运行时添加到 TreeView 目录

    我有一个TreeView我想允许用户添加和删除子项目 在探索基本功能时 我使用button and a textbox添加此子项 当用户点击button a new TreeViewItem需要创建并设置为我的父项的子项TreeView与t
  • 混合 MFC 和 WPF:模态对话框

    我使用 C CLI 界面层将 C WPF 对话框添加到现有的 C MFC 应用程序 我一切正常 只是我遇到了形式问题 例如 MFC 应用程序使用 ShowDialog 显示 WPF 对话框 按预期工作 该 WPF 对话框显示使用 DoMod
  • 如何在 WPF 应用程序上执行异步启动?

    我在异步等待方面相当落后 所以这可能是一个 duh 问题 我正在开发一个非常小的 UI 应用程序 它使用以下命令从系统托盘运行WPF 通知图标 http www codeproject com Articles 36468 WPF Noti
  • 阻止 WPF 文本框增长

    我花了两个小时研究如何避免在输入长文本时我的 WPF TextBox 控件变长 但我无法做到这一点 即使我读过一些关于它的答案 如下所示 停止 wpf textbox from grow with text https stackoverf
  • 不将 ViewModel 放置在单独的程序集中有充分的理由吗?

    我正在 WPF 中使用 MVVM 模式开发一个项目 MVVM 的主要优势之一是保持业务逻辑和表示之间的清晰分离 为了测试所有内容实际上的分离程度 周末我将所有 ViewModel 模型和业务逻辑移动到一个单独的 dll 中 exe 被保留为
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 元素属性语法和属性属性语法之间有语义差异吗?

    我认为元素属性语法和属性属性语法在语义上没有太大区别 但是 我发现一定有什么不同 例如 下面的例子只是演示了一个简单的触发器
  • 在 NUnit 测试中使用 WPF 组件 - 如何使用 STA?

    我需要在 NUnit 单元测试中使用一些 WPF 组件 我通过 ReSharper 运行测试 在使用 WPF 对象时失败并出现以下错误 系统 InvalidOperationException 调用线程必须是 STA 因为许多 UI 组件都

随机推荐

  • PHP 的 Curl 无法在 AppEngine 上运行

    在本地 AppEngine 上 curl 请求给出以下结果 这正是我所期望的 url gt https spreadsheets google com feeds spreadsheets private full content type
  • 定时器触发不会触发队列但手动录入会触发-Python

    我有一个队列触发器 当消息手动添加到队列中时 它会启动并按预期运行 但是 当消息通过以下定时器触发函数写入队列时 它无法启动 我可以看到触发器已成功写入消息 init py import datetime import logging im
  • 在 HTTPServlet 请求中编码 UTF-8

    这可能看起来像是一个已经解决的问题 但事实并非如此 因为我已经解决了所有涉及 UTF 8 的问题 但没有一个解决方案对我有帮助 我使用 JSON 简单库向包含 JSON 对象的 java servlet 发送 http 请求 我在Tomca
  • 如何同时针对多种类型专门化方法

    我有这样的代码 template lt class T gt struct Value quite a lot of other functions which I do not want to specialize too void pr
  • LINQ 使用 OR 连接

    我想使用 OR 语句与 LINQ 进行 JOIN 这是我开始的 SQL 查询 SELECT t id FROM Teams t INNER JOIN Games g ON g homeTeamId t id OR g awayTeamId
  • 如何跟踪 WinForms 中任何子控件何时获得或失去焦点?

    我有一个 Windows 窗体自定义控件 其作用类似于面板 因为它可以包含任意数量的子项 子控件的数量和类型是在运行时确定的 因此我需要以通用方式工作 而不知道可能存在或不存在的确切子控件 我想根据面板是否包含焦点来更改面板的背景颜色 因此
  • 在视图导出中获取摘要计数?

    我需要将视图导出到 Excel 我已经在某处找到了一些代码 它在 xpages 中运行得很好 现在用户想要添加总计摘要 我会解释 我有一个包含用户名 项目 ID 和设备 ID 的文档 我需要做的是导出具有特定项目 ID 的所有文档 在导出中
  • 如何在 C# 中更新查询字符串?

    网址中的某处有一个 sortBy 6 如何在单击按钮时将其更新为 sortBy 4 或 sortBy 2 我是否需要编写自定义字符串函数来创建正确的重定向 URL 如果我只需要附加一个查询字符串变量我会这样做 string complete
  • 使用此椭圆曲线点乘法计算的点不在曲线上,此类带来算术异常

    我得到了使用标准投影坐标进行点乘错误的堆栈 我不知道我错过了什么 但相乘的点并不位于曲线上 有时它会输出类似的内容算术异常 整数不可逆 public class ECPointArthimetic EllipticCurve ec priv
  • 在 redhat linux 上安装 docker - 'container-selinux' 和 'selinux-policy' 问题

    我在 EC2 上有 Linux 并尝试安装 Docker 如何解决 container selinux 和 selinux policy 的问题 lsb release d Description Red Hat Enterprise Li
  • 避免 R 中的 for 循环

    我想要一些关于编写更好的 R 代码的建议 我目前在 R 中编写了一个循环 但它存在性能问题 我无法集中精力对其进行矢量化 因为输出数据帧中的每一行都依赖于较早的行 并且它们会迭代地向下流动 因此我编写了一个循环来按顺序读 写行 我的代码示例
  • ruby-method_missing 返回无方法错误

    我正在尝试使用 method missing 将美元转换为不同的货币 class Numeric currency euro gt 2 yen gt 6 def method missing method id args block met
  • 类型错误:performanceMeasurement.startMeasurement 不是函数

    当尝试在 Next 13 中从 azure msal react 登录时 就发生了错误 当我检查错误日志时 它来自核心库 azure msal react 我也尝试过登录弹出窗口 但错误仍然相同 我有代码 在我的auth ts export
  • 使用 urllib2 进行 POST 调用而不是 GET

    关于 urllib2 和 POST 调用有很多东西 但我遇到了一个问题 我正在尝试对服务进行简单的 POST 调用 url http myserver post service data urllib urlencode name joe
  • 编译时错误和无法访问的代码

    好的 考虑下面的代码 private const int THRESHHOLD 2 static void Main string args string hello if THRESHHOLD gt 1 return Console Wr
  • ggplot更改网格以适应每月数据

    我有一个为期 1 年的数据集 名为afs20 其结构如下 datum包含数据点的日期 maand包含数据点的月份 delta包含目标变量 o ggplot afs20 o geom point aes x datum y delta sta
  • 使用 XPath 获取具有默认命名空间(无命名空间前缀)的元素

    在这个 SOAP XML 文件中 我怎样才能获得7关于使用 XPath 查询
  • Mono 编译器 // 终端模拟器问题

    当我尝试编译 csharp 或 fsharp 文件时出现此错误 使用 gnome 终端或 jetbrain rider 时会发生这种情况 它在 tty 或 xterm 和 urxvt 等终端中运行良好 我还能够编译 c c 和 go 代码
  • 提取服务器证书

    我需要帮助获取适当的代码片段来获取服务器证书 有效和无效 由 CA 签名和自签名 任何链接和参考都将受到高度赞赏 我有一个 UNIX 命令 它可以提供我想要的结果 但我想要使用 Java 得到相同的输出 UNIX 中的命令是这样的 echo
  • ItemTemplate 和 ItemContainerStyle 不能一起使用吗?

    我正在尝试将 ItemTemplate 和 ItemContainerStyle 应用于 ItemsControl