WPF - 动态工具提示

时间:2009-05-06 11:46:43

标签: c# wpf data-binding

我有一个班级ToolTipProvider 它有一个方法

string GetToolTip(UIElement element)

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

我想允许以任何wpf形式使用它,而开发人员只需要很少的工作量。基本上我想在ObjectDataProvider中插入一个Window.Resources资源来包装我的ToolTipProvider对象,然后我想我需要在资源中创建一个工具提示(例如MyToolTipProvider)它引用了ObjectDataProvider,然后在需要此工具提示功能的任何元素上,它只是ToolTip="{StaticResource MyToolTipProvider}"的情况 但是我无法解决a)如何将实际的elemnt本身绑定到objectdataprovider的MethodParameters,或者b)每次打开工具提示时如何强制它调用方法。

我需要的一般模式的任何想法/指针?不是寻找完整的解决方案,只是那些经验丰富的人提出的想法

2 个答案:

答案 0 :(得分:1)

  1. 创建一个新的用户控件,用作工具提示视图工厂。

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

  3. <AnyControl>
        <AnyControl.ToolTip>
            <YourToolTipControl Content="{Binding}" />
        </AnyControl.ToolTip>
    </AnyControl>
    

答案 1 :(得分:0)

不称自己为专家,但我可能会尝试附加属性这样的功能。这可以附加到UI中的任何元素,并且您可以指定一个事件处理程序,该事件处理程序可以访问要附加属性的对象以及传递给附加属性的值。您可以保留对附加属性所附加元素的引用,然后您可以随时更改工具提示。