C# WPF-动态工具提示

C# WPF-动态工具提示,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个类ToolTipProvider 哪个有方法 string GetToolTip(UIElement element) 它将根据各种因素(包括UIElement本身的属性)返回指定UIElement的特定工具提示,并查找可以动态更改的文档。它也可能在线程中运行,因此当表单第一次启动时,工具提示将类似于VisualStudio“文档缓存仍在构建”,然后在后台填充 我想让它在任何wpf形式中使用,而开发人员只需付出最小的努力。基本上,我想在窗口中插入一个ObjectDataProvider

我有一个类
ToolTipProvider
哪个有方法

string GetToolTip(UIElement element)
它将根据各种因素(包括UIElement本身的属性)返回指定UIElement的特定工具提示,并查找可以动态更改的文档。它也可能在线程中运行,因此当表单第一次启动时,工具提示将类似于VisualStudio“文档缓存仍在构建”,然后在后台填充

我想让它在任何wpf形式中使用,而开发人员只需付出最小的努力。基本上,我想在
窗口中插入一个
ObjectDataProvider
资源。Resources
要包装我的
ToolTipProvider
对象,我想我需要在引用该ObjectDataProvider的资源中创建一个工具提示(称为
MyToolTipProvider
),然后,在任何需要此工具提示功能的元素上,它只是
tooltip=“{StaticResource MyToolTipProvider}”
但是,我无法解决a)如何将实际元素本身绑定到objectdataprovider的MethodParameters,或b)如何强制它在每次打开工具提示时调用该方法


关于我需要的一般模式有什么想法/建议吗?不是在寻找完整的解决方案,只是来自那些更有经验的人的任何想法,我不称自己为专家,但我可能会尝试使用附加属性的功能。这将可附加到UI中的任何元素,并且您可以指定一个事件处理程序,该处理程序可以访问要附加属性的对象以及传递给附加属性的值。可以保留对附着属性所附着到的图元的引用,然后可以随时更改工具提示

  • 创建一个新的用户控件,该控件用作工具提示视图工厂

  • 将控件用作工具提示,使用绑定将工厂所需的任何数据传递给控件(例如数据、包含控件等)


  • 我喜欢它,我正在注册一个带有附加属性的PropertyChangedCallback,这样我就可以在设置属性时跟踪所有元素,正如您所建议的那样-到目前为止似乎工作得很好,谢谢 <AnyControl> <AnyControl.ToolTip> <YourToolTipControl Content="{Binding}" /> </AnyControl.ToolTip> </AnyControl>