#c# #wpf
#c# #wpf
Вопрос:
Я хочу иметь возможность назначать разные стили всплывающих подсказок стилю других элементов управления
Например, у меня есть стиль для моей всплывающей подсказки:
<Style x:Key="BorderedInfoTooltip" TargetType="{x:Type ToolTip}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolTip}">
<Border Background="DarkSlateGray" BorderBrush="DarkGoldenrod" BorderThickness="1" CornerRadius="2">
<StackPanel Orientation="Horizontal">
<Image Width="32" Height="32" Source="Resources/info.png" />
<ContentPresenter Content="{TemplateBinding Content}"/>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
И стиль для моих изображений значков:
<Style x:Key="IconStyle" TargetType="Button">
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="Width" Value="20"></Setter>
<Setter Property="Height" Value="20"></Setter>
</Style>
Как сделать так, чтобы эти кнопки (со стилем == icontyle) имели мой стиль всплывающей подсказки?
Комментарии:
1. Я внес небольшие изменения, для какого элемента управления он должен быть применен, предположим, мы применили мою всплывающую подсказку к кнопкам
Ответ №1:
Вместо того, чтобы размещать всплывающую подсказку вне стиля значка, поместите ее в ресурсы стиля изображения и пропустите ключ следующим образом:
<Style x:Key="IconStyle" TargetType="Image">
<Style.Resources>
<Style TargetType="{x:Type ToolTip}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolTip}">
<Border Background="DarkSlateGray" BorderBrush="DarkGoldenrod" BorderThickness="1" CornerRadius="2">
<StackPanel Orientation="Horizontal">
<Image Width="32" Height="32" Source="Resources/info.png" />
<ContentPresenter Content="{TemplateBinding Content}"/>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.Resources>
<Setter Property="VerticalAlignment" Value="Center"></Setter>
<Setter Property="HorizontalAlignment" Value="Center"></Setter>
<Setter Property="Width" Value="20"></Setter>
<Setter Property="Height" Value="20"></Setter>
</Style>
Редактировать:
Или вы можете оставить его в качестве глобального или ресурсов Windows и ссылаться на него в ресурсах Iconstyle следующим образом:
<Style x:Key="IconStyle" TargetType="Image">
<Style.Resources>
<Style TargetType="ToolTip" BasedOn="{StaticResource BorderedInfoTooltip}" />
</Style.Resources>
...
Комментарии:
1. Но я полагаю, что другие элементы управления также, вероятно, будут иметь этот стиль всплывающей подсказки
2. @AndreyIschencko: смотрите мое дополнение.
Ответ №2:
Почему вы не можете установить свой стиль изображения следующим образом :
<Image Width="32" Height="32" Source="Resources/info.png" Style="{StaticResource IconStyle}"/>
Комментарии:
1. О, вы этого не понимаете. У меня много изображений. Я хочу иметь стиль шаблона всплывающей подсказки, и эта подсказка будет включать небольшое информационное изображение
info.png