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();
//}
}