Wpf:在多个控件上应用自定义样式的工具提示

2023-12-25

我正在使用 WPF 应用程序。我创建了一个自定义控件库,在其中自定义了所有控件,这意味着添加了一些功能并重新设计了它们的样式。我也以同样的方式重新设计了工具提示。我在其他项目中使用这个自定义库。除了工具提示之外,一切都工作正常。工具提示样式未得到应用。任何帮助请。

Edit:

我创建了一个名为 ToolTip 的自定义类,该类派生自 System.Windows.Controls.ToolTip,我也为自定义类声明了样式。现在我想知道如何将这种样式应用于每个控件的工具提示,我的意思是每当用户在控件上设置工具提示时我想创建我的工具提示对象。

in .cs:

public class ToolTip : System.Windows.Controls.ToolTip
{
    static ToolTip()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(ToolTip), new FrameworkPropertyMetadata(typeof(ToolTip)));
    }
}

在.xaml(资源字典)中:

<Style TargetType="{x:Type local:ToolTip}">
    <Setter Property="VerticalOffset" Value="-2" />
    <Setter Property="HorizontalOffset" Value="20" />
    <Setter Property="Height" Value="35"></Setter>
    <Setter Property="Placement" Value="Top" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:ToolTip}">
                <Grid Name="Border" Background="Transparent" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
                    <Rectangle RadiusX="7.5" RadiusY="7.5">
                        <Rectangle.Fill>
                            <LinearGradientBrush StartPoint="0.5,-0.5" EndPoint="0.547,0.913">
                                <GradientStop Color="#FFEEEEEE" Offset="0"/>
                                <GradientStop Color="#FFBBBBBB" Offset="1"/>
                            </LinearGradientBrush>
                        </Rectangle.Fill>
                    </Rectangle>
                    <ContentPresenter Margin="10,0,10,0" HorizontalAlignment="Center" VerticalAlignment="Center" TextBlock.Foreground="Black" TextBlock.FontSize="12" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

任何帮助请。


将默认的工具提示样式放置在单独程序集中的共享 ResourceDictionary 中将允许多个项目使用它。您可以使用以下命令将 SharedStyleLibrary.dll 的 Resources 文件夹中的 MyDefaultStyles ResourceDictionary 合并到 App.xaml 中:

  <App.Resources>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/SharedStyleLibrary;component/Resources/MyDefaultStyles.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </App.Resources>

如果 MyDefaultStyles 包含隐式 ToolTip 样式 (<Style TargetType="{x:Type ToolTip}">) 它将被用作默认值。您还可以通过给样式一个 x:Key 来更本地化地定位它,然后在您希望它应用的任何范围(即窗口、用户控件、单一布局面板)中创建隐式工具提示样式:

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

Wpf:在多个控件上应用自定义样式的工具提示 的相关文章

  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • Android应用主题更换流畅

    我正在开发一个提供白天和夜间主题的项目 我正在更改主题 夜间主题 AppCompatDelegate setDefaultNightMode AppCompatDelegate MODE NIGHT YES 日主题 AppCompatDel
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 为什么 set_symmetry_difference 无法与比较器一起使用?

    Example program include
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • WPF:使用 StringFormat={}{0:F2} 进行文本框绑定。不显示零

    我使用以下 XAML 将对象绑定到 TextBox
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行

随机推荐

  • Delphi:我自己的计时器的OnTimer事件从未发生

    我需要一个Timer在 无表单 Delphi 单元中 仍然有一个带有表单的主单元 所以我这样做 unit interface type TMyTimer Class TTimer public procedure OnMyTimer Sen
  • 在WPF中,如何从属于它的UIElement中获取RowDefinition对象?

    以下面的窗口布局为例 有一个Grid定义的元素 它有 3 行 每一行都有一个 Button 元素 我如何获得RowDefinition它所属的 Button 的对象 谢谢 注意 通过致电Grid GetRow Button element
  • 如何避免实例之间共享类数据?

    我想要的是这种行为 class a list x a y a x list append 1 y list append 2 x list append 3 y list append 4 print x list prints 1 3 p
  • F#:如何求笛卡尔幂

    我在编写笛卡尔幂函数时遇到问题 我发现了很多关于计算笛卡尔积的例子 但没有关于笛卡尔幂的例子 例如 1 2 的 3 次方 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 2 1 2 2 2 1 2 2 2 我使用以下代码来计算笛
  • 如何在bash中设置4个空格制表符

    它看起来像set tabstop 4在VIM中 但我不知道如何设置它bash 例如 echo e 1234567890 t321 n1 t2 n123 t1 电流输出 1234567890 321 1 2 123 1 我想要这样的输出 12
  • 如何检测 Pascal 中经过的时间?

    我正在尝试用 Pascal 创建一个简单的游戏 它使用控制台 游戏的目标是在 60 秒内收集尽可能多的 苹果 游戏结构是一个简单的无限循环 每次迭代 您都可以迈出一步 问题是 在你采取行动之前 readKey 时间可以随心所欲地流逝 例如
  • 如何删除用 / 分隔的单元格中的重复值?

    我在Excel中有多个单元格 其内容如下 b1 E4I8 E4I8 E4I8 E4I8 b2 D3B2 B30C1 D3B2 D3B2 D3B2 B30C1 multiple xxxx 如何删除同一单元格中的这些重复文本字符串 谢谢 此函数
  • 获取 .NET 方法返回值的属性数据

    我可以在 MemberInfo 上调用 GetCustomAttributesData 这很好 因为我知道调用了哪个构造函数来初始化属性以及使用了哪些命名参数 如果我将 return 放在方法上以赋予返回值属性 则无法访问 GetCusto
  • Excel:在“kx + m”文本字符串中查找 k 和 m

    有没有一种巧妙的方法使用VBA或查找 a 中的 k 和 m 变量的公式kx m string kx m 字符串的外观有多种情况 例如 312 x 12 12 x 2 4 x 等等 我很确定我可以通过在 Excel 中编写非常复杂的公式来解决
  • Selenium 应用程序在 Heroku 上托管时重定向到 Cloudflare 页面

    我制作了一个不和谐的机器人 它使用 selenium 访问网站并获取信息 当我在本地运行代码时 我没有任何问题 但是当我部署到 Heroku 时 我得到的第一个 URL 将我重定向到该页面Attention Required Cloudfl
  • 根据单选按钮单击显示和隐藏 div [重复]

    这个问题在这里已经有答案了 我希望能够使用单选按钮和 jQuery HTML 动态更改显示的 div div 2 Cars div
  • Linq 风格“For Each”[重复]

    这个问题在这里已经有答案了 是否有用于 Foreach 操作的 Linq 风格语法 例如 将基于一个集合的值添加到另一个已存在的集合中 IEnumerable
  • Pycharm 中的远程开发 - 无需本地副本

    我知道如何在 Pycharm 中设置远程解释器 到目前为止远程开发进展顺利 但在某些情况下 我无法在我处理商业问题的计算机上保存文件的本地副本 有没有办法在 Pycharm 中远程开发WITHOUT有脚本和其他项目文件的本地副本吗 我刚刚遇
  • IE 中的 JavaScript 分析器

    有谁知道在 IE 中分析 JavaScript 的工具吗 可用列表 IE8 http blogs msdn com ie archive 2008 09 11 introducing the ie8 developer tools jscr
  • 录制直播音频

    我实际上正在制作一个应用程序 它必须在 iPad 上播放和录制来自互联网的流媒体音频 音频流已经完成 我很快就要进入录音部分 我不知道如何继续 你能给我一个提示吗 主意 它必须在播放的同时录制为 AAC 或 MP3 Thanks 您需要使用
  • 如何在 TypeScript 中通过 AMD 请求 jquery

    我的 TypeScript 模块如何需要 jquery AMD 模块 例如 假设脚本的目录结构如下所示 jquery 1 8 2 js jquery d ts module ts require js 我希望从 module ts 生成的
  • 为什么它不是尾递归?

    我有以下代码 我不明白为什么它不是尾递归 override fun drop n Int List a if n 0 this else tail drop n 1 而这是尾递归 fun drop n Int List a tailrec
  • 如何在 Python 中比较数组中的值 - 找出两个值是否相同

    我基本上有一个包含 50 个整数的数组 我需要找出这 50 个整数是否相等 如果相等 我需要执行一个操作 我该怎么做呢 据我所知 Python 中目前没有一个函数可以做到这一点 如果你的意思是你有一个列表并且你想知道是否有重复的值 那么从列
  • 并发、并行和异步方法有什么区别?

    并发是指两个任务在不同的线程上并行运行 但是 异步方法并行运行 但在同一个线程上 这是如何实现的 另外 并行性怎么样 这3个概念有什么区别 并发和并行实际上与您正确推测的原理相同 两者都与同时执行的任务有关 尽管我想说并行任务应该是真正的多
  • Wpf:在多个控件上应用自定义样式的工具提示

    我正在使用 WPF 应用程序 我创建了一个自定义控件库 在其中自定义了所有控件 这意味着添加了一些功能并重新设计了它们的样式 我也以同样的方式重新设计了工具提示 我在其他项目中使用这个自定义库 除了工具提示之外 一切都工作正常 工具提示样式