Прежде всего, я искренне благодарю это сообщество за всю помощь, которую я получил за последние 3 месяца, с тех пор как я начал играть с C # и WPF.Я совершенно новичок в этом мире, поэтому, пожалуйста, потерпите меня.
Теперь перейдем непосредственно к моему вопросу: в моем главном окне у меня есть панель инструментов с рядом кнопок.Каждая кнопка отображает значок, представляющий собой векторное изображение, преобразованное из Inkscape в форму:
<Viewbox>
<Canvas>
<Geometry .../>
</Canvas>
</Viewbox>
Все значки хранятся в ResourceDictionary:
<DataTemplate x:Key="myIcon">
<Viewbox>
<Canvas>
<Geometry .../>
</Canvas>
</Viewbox>
</DataTemplate>
и назначаются соответствующей кнопкечерез ContentPresenter:
<Button x:Name="myButton">
<Button.ToolTip>
<myDependencyProperties:EnhancedTooltip Header="Main" Style="{StaticResource EnhancedTooltip}" Content="Main Page"/>
</Button.ToolTip>
<Button.Content>
<ContentPresenter ContentTemplate="{StaticResource myIcon}"/>
</Button.Content>
</Button>
Элемент управления My Enhanced Tooltip должен отображать, среди прочего, значок родительской кнопки (как это имеет место для некоторых кнопок в ленте MS Office).Я пробовал несколько способов привязать содержимое всплывающей подсказки, добавив метку или кнопку и привязав ее содержимое к кнопке, например:
<ContentPresenter ContentTemplate="{Binding Path=ManyDifferentAttempts, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"/>
Нет необходимости говорить, что яне удалось.Я также попытался назначить значок кнопке с помощью стилей, например:
<Button x:Name="myButton">
<Button.ToolTip>
<myDependencyProperties:EnhancedTooltip Header="Main" Style="{StaticResource EnhancedTooltip}" Content="Main Page"/>
</Button.ToolTip>
<ContentControl Style="{StaticResource myIcon}"/>
</Button>
, где значки, конечно, хранятся как стили:
<Style x:Key="myIcon" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Viewbox>
<Canvas>
<Geometry .../>
</Canvas>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
и добавил элемент управления содержимым (меткаили кнопку) в EnhancedTooltip, чтобы имитировать поведение родительской кнопки, привязав ее стиль ContentPresenter к стилю родительской кнопки.Без какого-либо успеха.
Я мог легко достичь своей цели, когда использовал изображение (png) в качестве значка для моей кнопки:
<Button x:Name="myButton">
<Button.ToolTip>
<myDependencyProperties:EnhancedTooltip Header="Main" Style="{StaticResource EnhancedTooltip}" Content="Main Page"/>
</Button.ToolTip>
<Image Source="PathToMyPNGImage"/>
</Button>
и в своем стиле EnhancedTooltip:
<Image Source="{Binding Path=Content.Source, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}} }"/>
Как я могу достичь того же результата, когда я решил вместо этого использовать векторное изображение?Я легко могу вернуться к предыдущему подходу, но я хотел бы узнать что-то новое.
Спасибо за ваше время.
Марко