Tooltip в Silverlight 3 – часть 1
Достаточно часто в наших приложениях нам требуется создавать всплывающие подсказки. В Silverlight для этого существует класс ToolTip.
С помощью этого класса мы можем достаточно легко создавать такие подсказки:
<Button Content="Click me!" Width="100" Height="100">
<ToolTipService.ToolTip>
<ToolTip Width="100" Height="100">
<TextBlock Text="123"/>
</ToolTip>
</ToolTipService.ToolTip>
</Button>
Как видно, код достаточно прост и лаконичен. Однако, подсказки, которые мы видим при этом могут показаться скучными.
Давайте посмотрим на то, каким образом можно определить поведение этих подсказок в более интересном виде. Также как и в WPF мы можем переопределить общий шаблон для объекта ToolTip и существенно изменить его внешний вид.
<Button Content="Click me!" Width="100" Height="100">
<ToolTipService.ToolTip>
<ToolTip Width="100" Height="100">
<ToolTip.Template>
<ControlTemplate TargetType="ToolTip">
<Border CornerRadius="5" Background="Red">
<ContentPresenter Margin="5" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</ToolTip.Template>
<TextBlock Text="123"/>
</ToolTip>
</ToolTipService.ToolTip>
</Button>
Теперь наша подсказка стала более привлекательной.
Понятно, что определять ControlTemplate каждый раз для каждой подсказки дело неблагодарное, поэтому определим подсказки стиль.
<Button Content="Click me!" Width="100" Height="100">
<ToolTipService.ToolTip>
<ToolTip Width="100" Height="100">
<ToolTip.Style>
<Style TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border CornerRadius="5" Background="Red">
<ContentPresenter Margin="5" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToolTip.Style>
<TextBlock Text="123"/>
</ToolTip>
</ToolTipService.ToolTip>
</Button>
После этого можно вынести этот стиль в ресурсы и использовать его многократно.
<UserControl.Resources>
<Style x:Key="TooltipStyle" TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border CornerRadius="5" Background="Red">
<ContentPresenter Margin="5" Content="{TemplateBinding Content}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<!-- .... --->
<Button Content="Click me!" Width="100" Height="100">
<ToolTipService.ToolTip>
<ToolTip Width="100" Height="100" >
<TextBlock Text="123"/>
</ToolTip>
</ToolTipService.ToolTip>
</Button>
Теперь наша подсказка стала более приятной визуально.
Однако, справедливости ради, нужно сказать, что вынесение в стили не всегда возможно, но об этом мы поговорим в следующий раз.
Добавить комментарий