C# 具有多个内容属性的工具提示控件
我正在用SilverLight 5设计自己的工具提示,需要在显示时向它传递几个值 风格如下:C# 具有多个内容属性的工具提示控件,c#,silverlight,xaml,tooltip,styling,C#,Silverlight,Xaml,Tooltip,Styling,我正在用SilverLight 5设计自己的工具提示,需要在显示时向它传递几个值 风格如下: <Style x:Key="TooltipStyle" TargetType="ToolTip"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ToolTip">
<Style x:Key="TooltipStyle" TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border BorderBrush="Blue" BorderThickness="2" Background="White">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Var Number: "></TextBlock>
<ContentPresenter x:Name="Content1"
Content="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</StackPanel>
<StackPanel Grid.Row="1">
<TextBlock Text="Last Update Date: " />
<ContentPresenter x:Name="Content2"
Content="{TemplateBinding Content}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</StackPanel>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
那里只有一个“Content”属性,但我还需要将某些内容传递给“Content2”。(请注意,内容是在我们执行“for”循环时收集的。)
因此,出现的图像不是只有一个变量,而是可以有Var编号和上次更新日期。声誉太低,无法发布图像,以下是工具提示的最终外观,让您了解:
情况就是这样
现在我想知道是否可以公开第二个内容属性?或者也许有一种更聪明、更好的方式来设计工具提示,以满足我的需要
请注意,此示例需要显示两个值(或“内容”),但工具提示将扩展为需要更多值
我会很感激你的任何想法。所以,为了让你更容易,我个人只需要利用已经为这类事情提供的东西。例如,使用
标记
将这类内容复制到模板中
一个例子(添加了一些setter和您可能想省略或更改的内容),如
这样,您只需将一个值传递给Content
,将另一个值传递给Tag
,就可以了。你也可以轻松地做其他事情,有多种选择。希望这有帮助,干杯
var customTooltip = new ToolTip
{
Style = (Style)Resources["TooltipStyle"],
Content = questions.Number[c]
};
ToolTipService.SetToolTip(textbox, customTooltip);
<Style x:Key="NiftyToolTipStyle" TargetType="ToolTip">
<Setter Property="FontFamily" Value="{StaticResource FontFamily}" />
<Setter Property="FontSize" Value="{StaticResource FontSize}" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="White" />
<Setter Property="Padding" Value="3" />
<Setter Property="BorderThickness" Value="1,2" />
<Setter Property="BorderBrush" Value="Blue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border x:Name="Root"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="1"
Padding="{TemplateBinding Padding}"
Cursor="{TemplateBinding Cursor}">
<Border.Effect>
<DropShadowEffect Opacity="0.35" ShadowDepth="3" />
</Border.Effect>
<TextBlock>
<Run Text="{TemplateBinding Tag, StringFormat='Var Number: \{\0}'}"/>
<LineBreak/>
<Run Text="{TemplateBinding Content, StringFormat='Last Update Date: \{\0}'}"/>
</TextBlock>
<!--
<ContentPresenter Margin="{TemplateBinding Padding}"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Cursor="{TemplateBinding Cursor}" />
-->
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>