Как установить всплывающую подсказку для пользовательского контроля (из файла стиля) - PullRequest
2 голосов
/ 22 августа 2010

Я создал свой элемент управления, который выглядит так

<UserControl BorderBrush="#A9C2DE" HorizontalAlignment="Left" x:Class="WPFDiagramDesignerControl.Components.UcWBSBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="86" Width="151" >

<UserControl.Resources>
    <ResourceDictionary Source="Tooltip.xaml"/>
</UserControl.Resources>
    <Grid x:Name="MainGrid">

    <TextBox Name="txtBox"  Style="{StaticResource DefaultStyle}" >
    </TextBox>

</Grid>

У меня также есть файл со стилем для всплывающей подсказки "Tooltip.xaml" Как я могу использовать этот стиль для всего UserControl? Обычно я делал это с этим кодом

<TextBox ToolTip="{StaticResource tooltipname}"/>

Но это было легко, потому что файл со стилем был в словаре ресурсов управления, где я поместил текстовое поле. Однако я не могу сделать что-то подобное

 <UserControl BorderBrush="#A9C2DE" HorizontalAlignment="Left" ToolTip="{StaticResource tooltipname"}/>

Потому что на данный момент мой стиль еще не в ресурсном динионаре. Я пытался использовать этот синтаксис

<UserControl.ToolTip>  </UserControl.ToolTip>

но я не знаю, как мне ссылаться на статический ресурс

Может быть, это неубедительный вопрос, но я просто не знаю, как это сделать:)

1 Ответ

1 голос
/ 22 августа 2010

Один из вариантов - просто использовать DynamicResource вместо StaticResource, чтобы отложить поиск до времени выполнения, а затем использовать синтаксис атрибута:

<UserControl ... ToolTip="{DynamicResource tooltipname}" ...

Вы также можете написать StaticResourceExtension с использованием синтаксиса элемента, чтобы вы могли его написатьпосле раздела Ресурсы:

<UserControl.Resources>
    <ResourceDictionary Source="Tooltip.xaml"/>
</UserControl.Resources>
<UserControl.ToolTip>
    <StaticResourceExtension ResourceKey="tooltipname"/>
</UserControl.ToolTip>
...