C# WPF:新窗口中的工具提示

C# WPF:新窗口中的工具提示,c#,wpf,popup,tooltip,C#,Wpf,Popup,Tooltip,我有以下样式的工具提示: <Style x:Key="ToolTipPopUp" TargetType="{x:Type ContentControl}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type ContentContro

我有以下样式的工具提示:

        <Style x:Key="ToolTipPopUp" TargetType="{x:Type ContentControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContentControl}">
                        <StackPanel Orientation="Horizontal">
                            <StackPanel.ToolTip>
                                <ToolTip Visibility="Hidden" />
                            </StackPanel.ToolTip>
                            <ContentPresenter />
                            <Image Source="/Resources/info.png" 
                                   ToolTip="{TemplateBinding ToolTip}"
                                   Height="12"
                                   VerticalAlignment="Top" />
                        </StackPanel>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
StylesDictionary.xaml

<Style x:Key="ToolTipPopUp" TargetType="{x:Type ContentControl}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ContentControl}">
                <StackPanel Orientation="Horizontal">
                    <ContentPresenter />
                    <Button Width="Auto">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Click">
                                <ei:CallMethodAction TargetObject="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}},
                                                                                        Path=DataContext}"
                                                             MethodName="ToolTipPopUpClicked" />
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Button.Template>
                            <ControlTemplate>
                                <Image Source="Resources/info.png" 
                                            ToolTip="{TemplateBinding ToolTip}"
                                            Height="12"
                                            VerticalAlignment="Top" >

                                </Image>
                            </ControlTemplate>
                        </Button.Template>
                    </Button>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

XAML文件

            <ContentControl Name="PopupExample" 
                            Style="{StaticResource ToolTipPopUp}" 
                            ToolTip="Hello world">
                <CheckBox Content="I am a check box" />
            </ContentControl>

这将保留标准的工具提示功能,并在用户单击工具提示图标(蓝色“i”)时提供一个弹出窗口。

<Style x:Key="ToolTipPopUp" TargetType="{x:Type ContentControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ContentControl}">
                    <StackPanel Orientation="Horizontal">
                        <StackPanel.ToolTip>
                            <ToolTip Visibility="Hidden" />
                        </StackPanel.ToolTip>
                        <ContentPresenter />
                        <Image Source="/info.png" 
                               ToolTip="{TemplateBinding ToolTip}"
                               Height="12"
                               VerticalAlignment="Top" >
                            <Image.Style>
                                <Style>
                                    <EventSetter Event="Mouse.MouseEnter" Handler="Show_PopupToolTip" />
                                    <EventSetter Event="Mouse.MouseLeave" Handler="Hide_PopupToolTip"/>
                                </Style>
                            </Image.Style>
                        </Image>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

请通过添加链接页面中的一些内容或如何使用
弹出窗口
控件的自定义示例,使您的答案更有用。据我所知,弹出窗口需要某种方法来处理与弹出窗口关联的按钮的点击事件。我更喜欢不需要button&onClick事件(以及相关代码)的解决方案,因为许多用户控件都使用了原始样式。在给出更好的答案之前,我需要知道:将其作为窗口的目的是什么?是因为工具提示在他们可以全部阅读之前就关闭了还是什么?一扇真正需要关上的窗户会很烦人!如果文字太长或其他原因,可以在工具提示中进行换行。查看“我的答案”以了解如何创建自定义工具提示弹出窗口。本例仍然要求您为文本源提供工具提示,您只需禁用实际的工具提示。顺便说一句,这个代码可以用来显示任何类型的控件等@TheodosiusVonRichthofen客户希望弹出窗口保持打开状态,我认为他们计划在弹出窗口中添加长指令。我对窗户的理由是,它可以根据需要移动,然后在需要时关闭。我的OP中没有的一件事是,代码中有大量的工具提示,因此这种风格使得反复实现变得非常容易。那么,你是打算在用户单击某个东西时打开这个窗口,还是每次鼠标出现时都打开这个窗口?听起来很糟糕。“长指令”将从何而来、复选框的工具提示属性或其他内容?
            <ContentControl Name="PopupExample" 
                            Style="{StaticResource ToolTipPopUp}" 
                            ToolTip="Hello world">
                <CheckBox Content="I am a check box" />
            </ContentControl>
<Style x:Key="ToolTipPopUp" TargetType="{x:Type ContentControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ContentControl}">
                    <StackPanel Orientation="Horizontal">
                        <StackPanel.ToolTip>
                            <ToolTip Visibility="Hidden" />
                        </StackPanel.ToolTip>
                        <ContentPresenter />
                        <Image Source="/info.png" 
                               ToolTip="{TemplateBinding ToolTip}"
                               Height="12"
                               VerticalAlignment="Top" >
                            <Image.Style>
                                <Style>
                                    <EventSetter Event="Mouse.MouseEnter" Handler="Show_PopupToolTip" />
                                    <EventSetter Event="Mouse.MouseLeave" Handler="Hide_PopupToolTip"/>
                                </Style>
                            </Image.Style>
                        </Image>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
Window win;

    private void Show_PopupToolTip(object sender, MouseEventArgs e)
    {
        var fred = ((Image)sender).TemplatedParent;

        if (fred != null)
        {
            ContentControl c = fred as ContentControl;
            string myText = c.ToolTip.ToString();

            if (!String.IsNullOrEmpty(myText))
            {
                if (win == null || !win.IsVisible)
                    win = new Window();
                win.Height = 275;
                win.Width = 275;
                win.Content = myText;
                win.Show();
            }
        }
    }
    private void Hide_PopupToolTip(object sender, MouseEventArgs e)
    {
        //if (win != null)
        //{
        //    win.Close();
        //}
    }