在 WPF UserControl 上应用样式时出现问题

2023-12-23

我有一个用户控件,我想在其他项目中使用它。当我直接为其属性设置一些值时没有问题:

<local:MyUserControl prop1="val1" prop2="val2">
    ...
</local:MyUserControl>

但我无法对其应用样式。我试过:

<Window ...>
    <Window.Resources>
        <Style x:Key="MyUserControlStyle" TargetType="{x:Type local:MyUserControl}">
            <Setter Property="prop1" Value="val1"/>
            <Setter Property="prop2" Value="val2"/>
        </Style>
    </Window.Resources>

    <Grid>
        <local:MyUserControl Style="{StaticResource ResourceKey=MyUserControlStyle}">
            ...
        </local:MyUserControl>
    </Grid>
</Window>

我哪里做错了? -谢谢


根据亲爱的@Mario Vernari 的指示,我发现问题是由于我用来创建用户控件的错误策略造成的。我想创建一个能够容纳其他一些用户控件的用户控件。所以我尝试过这个:

<UserControl x:Class="MyNamespace.MyUserControl"
             ...
             Style="{DynamicResource ResourceKey=MyUserControlStyle}">
    <UserControl.Resources>
        ...
        <Style x:Key="MyUserControlStyle" TargetType="{x:Type UserControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type UserControl}">
                        <Border BorderBrush="{Binding Path=DP1}">
                            ...
                            <ContentPresenter ... Content="{TemplateBinding Content}"/>
                            ...
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
</UserControl>

Where DP1是类型的依赖属性Brush。如果您设置其属性(例如DP1) 直接地。这绝对不是 @Mario 告诉我的正确方式:

...当您使用 UserControl 时,这意味着您already了解其布局,无需进一步设置控件的样式。您正在两次定义其样式同时从而导致碰撞...

他补充道:

相反,您应该使用 CustomControl;定义默认样式Themes文件夹(如果您拥有常规 Visual Studio,它会自动生成)。之后,您可以override您自己的应用程序中的默认样式。与处理普通基类及其派生类的方式相同。

请按照以下步骤操作:http://www.codeproject.com/KB/WPF/WPFCustomControl.aspx http://www.codeproject.com/KB/WPF/WPFCustomControl.aspx ...

显然,在这种情况下,我们需要从ContentControl类(而不是Control班级)。你可以看看this http://10rem.net/blog/2010/02/05/creating-customized-usercontrols-deriving-from-contentcontrol-in-wpf-4 & this http://www.abhisheksur.com/2011/07/writing-reusable-custom-control-in-wpf.html去掌握细节。

在此,再次感谢@Mario。 ;)

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

在 WPF UserControl 上应用样式时出现问题 的相关文章

  • 进入嵌入式[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何设置 web.config 文件以显示完整的错误消息

    我在 Windows Azure 上部署了 MVC 3 应用程序 但现在当我通过请求时staging url它告诉我 很抱歉 在执行您的要求时发生了一个错误 现在我想查看完整的错误消息 默认情况下由于某些安全原因它会隐藏该消息 我知道我们可
  • ScrollableControl 在整个控件周围绘制边框

    我正在构建基于的自定义用户控件ScrollableControl 现在我正在尝试在控件周围添加边框 类似于 DataGridView 的边框 我可以使用以下方法绘制边框 e Graphics TranslateTransform AutoS
  • C# SMO 远程数据库备份到本地机器

    我有一个执行 SQL 数据库备份和恢复的应用程序 这在本地计算机上运行良好 但是如果我针对另一台计算机上托管的 SQL 服务器运行此应用程序 则会出现以下错误 Microsoft SqlServer Management Smo Faile
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • 从 C# 访问 COM vtable

    C 中有没有办法访问 COM 对象的虚拟方法表以获取函数的地址 经过大量搜索和拼凑不同的部分解决方案后 我弄清楚了如何做到这一点 首先 您需要为您尝试访问的对象定义 COM 组件类 ComImport Guid InterfaceType
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 如何检查我的程序是否有数据通过管道传输到其中

    我正在编写一个应该通过标准输入读取输入的程序 所以我有以下结构 FILE fp stdin 但是 如果用户没有将任何内容通过管道传输到程序中 这就会挂起 我如何检查用户是否确实将数据通过管道传输到我的程序中 例如 gunzip c file
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • nVidia 和 ATI 之间的 OpenGL 渲染差异

    最近 我将 ATI 驱动程序 我使用的是 HD7970 更新为最新版本 但我的 OpenGL 项目的一些对象停止工作 更重要的是 他们适用于 nVidia 最新驱动程序 在 960m 上测试 ATI 和 nVidia 渲染管道之间有什么我应
  • 即使没有任何转换,也违反了 C 中的严格别名?

    How can i and u i在此代码中打印不同的数字 即使i定义为int i u i 我只能假设我在这里触发了 UB 但我不知道具体是如何触发的 ideone演示 http ideone com Gcv5Xm如果我选择 C 作为语言
  • 删除指针后将其设为 NULL 是一个好习惯吗?

    我首先要说的是 使用智能指针 您将永远不必担心这个问题 下面的代码有什么问题 Foo p new Foo use p delete p p NULL 这是由答案和评论 https stackoverflow com questions 19
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe
  • 布尔实现的atomicCAS

    我想弄清楚是否存在错误答案 https stackoverflow com a 57444538 11248508 现已删除 关于Cuda like的实现atomicCAS for bool是 答案中的代码 重新格式化 static inl

随机推荐

  • 使用 ES6 (Babel) 导出类

    我正在使用 ECMAScript 6 编写一些前端代码 使用 BabelJS 进行编译 然后使用 Browserify 进行浏览器化 以便我可以在一个文件中包含一个类 将其导出并将其导入到另一个文件中 我这样做的方式是 export cla
  • SearchView.isFocused 始终返回 false

    我正在尝试确定是否SearchViewActionBar 中的焦点 但当我打电话时SearchView isFocused 我总是得到false因此 即使视图真正聚焦 内部有光标 并且显示软键盘 我如何检查是否SearchView是否专注
  • 如何在测试期间对 Node.js 内置 fs 进行存根?

    我想存根 Node js 内置组件 例如fs这样我实际上就不会进行任何系统级文件调用 我唯一能想到的就是通过fs以及所有其他内置函数作为我所有函数的参数 以避免使用真正的 fs 这看起来有点愚蠢 并且创建了一个冗长的函数签名 里面挤满了内置
  • 如何将连字符后的第一个字母大写,即 Adam Smith-Jones

    我正在寻找一种将字符串的第一个字母大写的方法 包括名称由连字符连接的位置 例如 adam smith jones 需要是 Adam Smith Jones ucwords or ucfirst 如果我把它们分成名字和姓氏 只有亚当 斯密 琼
  • Rabbitmq:代理重启后未确认的消息不会消失

    我们观察到了 RabbitMQ 的以下行为 并试图了解它是否正确以及如何解决它 设想 持久 消息被传递到持久队列中 单个 消费者 Spring AMQP 获取消息并开始处理 gt 消息从 READY 变为 UNACK 现在代理已关闭 gt
  • 使用键值存储实现的图数据库

    我需要一个图形数据库 该数据库需要备份并可能在较低的抽象级别进行访问 为了负载平衡 它也必须是分布式的 单个主复制就可以 我知道可以使用自引用键值存储来实现图形数据库 Git 对象数据库就是这种模式的一个示例 我发现大多数图数据库令人沮丧的
  • 使用Python的h5py包读取hdf文件时出错

    我想从我下载的 hdf 文件中提取数据 MODIS http modis atmos gsfc nasa gov MOD08 M3 acquiring html网站 链接中提供了示例文件 我正在使用以下代码行读取 hdf 文件 gt gt
  • render() 中的 React 函数

    在 React 组件中放置函数的位置是否有偏好 我仍在学习 React 所以只是想找出最佳实践 class Content extends React Component What is the difference between put
  • 应用内购买自动续费交易恢复问题

    我正在开发一个应用程序 用户可以在其中购买自动续订订阅 购买部分工作正常 但当用户删除应用程序并尝试恢复其购买时会出现问题 以下是我为处理该问题而编写的代码 我已经给出了一个标题为 已经是订阅者 的按钮 当用户点击时 我调用以下代码 SKP
  • 致命错误:调用未定义的函数 mb_strlen()

    我正在尝试建立一个捐赠中心 我使用 Totorialzine 的源代码 到目前为止 一切对我来说都工作得很好 但唯一的问题是我一直在努力解决并试图查看一整天 并且无法准确地弄清楚代码到底出了什么问题 这是当我的访客捐赠时我在页面上提交评论时
  • 如何为Java源代码创建数据流程图

    我用 java 编写了一个包含大约 500 个类的应用程序 现在我知道这个问题已经被问过很多次了 但我仍然找不到合适的资源或教程来为我的整个项目创建数据流程图 任何帮助 教程 资源或代码示例将不胜感激 您也许能够从单元测试中导出数据流 如果
  • 垂直分隔线 CSS

    我正在创建一个垂直分隔线 效果很好 但是CSS很麻烦 CSS 是 headerDivider1 border left 1px solid 38546d height 80px position absolute right 250px t
  • 如何从文件夹中读取每个文件并为每个文件创建单独的数据帧?

    我试图让我的代码读取包含各种文件的文件夹 我希望让 Jupyter 读取该文件夹中的每个文件 并通过将文件名称作为数据帧名称来创建单独的数据帧 到目前为止我有代码 import glob path r C Users SemR Docume
  • 有没有办法使用 C# 或 vb 从 xml 递归查找最里面的节点

    我有一个 XML 文件说
  • Kubernetes 服务中端口 0 有何用途? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 创建服务时 我在内部端点列表中看到一个条目 如下所示myservice sandbox cluster 0 TCP以及我明确打开的端口 端
  • log_file 命令不记录 Expect 脚本中命令的输出

    我正在运行调试命令以将命令的输出记录到文件中 我尝试了 log file 命令 但它没有记录输出 我的代码如下 log file a gdb txt send debugulator sh file mns20 r log user 0 e
  • 当自定义验证器使用 @Component 注释时,JSR-303 验证将被忽略

    我注意到 当使用注释的自定义 Validator bean 时 JSR 303 验证在 Spring 中被完全忽略 Component被宣布 有趣的是 所述自定义验证器甚至不需要由任何类填写或使用 事实上 Spring 扫描其组件似乎足以使
  • Google 用户消息传递平台和 Objective C 到 Swift

    因此 我已经尝试了一个多星期来让谷歌用户消息传递平台正常工作 这个问题将在接下来的几周 几个月内到处出现 问题是启动guid是用obj C写的 我看不懂 我已经设法将 obj C 代码插入到我的 swift 项目中 它可以运行 但在尝试呈现
  • 用于创建发布定义的 Azure DevOps REST API

    我正在尝试使用 Azure DevOps REST API 创建发布定义 我创建了一个 json 文件 其中包含请求的配置详细信息 创建发布定义时出现以下错误 id 1 innerException null message Workflo
  • 在 WPF UserControl 上应用样式时出现问题

    我有一个用户控件 我想在其他项目中使用它 当我直接为其属性设置一些值时没有问题