2014-12-11 4 views
0

Это мой первый пост в stackoverflow и я новичок в xaml и wpf.Проблемы с моей подсказкой на пользовательском элементе управления (xaml wpf)

У меня есть настраиваемый элемент управления, над которым я работаю, и я хочу добавить всплывающую подсказку, которую можно настроить, когда объявлен элемент управления. Мне удалось получить подсказку, которая работает так, как я хочу, чтобы она использовала шаблон стиля, как показано ниже, однако у меня возникают проблемы с всплывающей подсказкой, даже когда у меня нет текстовой настройки для нее.

Я попытался вырезать любой из кода в фрагменте ниже, чтобы оставить только код, связанный с подсказкой.

<Style TargetType="{x:Type local:MetroButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type local:MetroButton}"> 
       <Grid x:Name="LayoutRoot" Margin="0" Width="{TemplateBinding BtnWidth}" Height="{TemplateBinding BtnHeight}" Background="{TemplateBinding Background}"> 
        <Grid.ToolTip> 
         <Border 
           BorderBrush="{TemplateBinding TooltipBorderColour}" 
           Background="{TemplateBinding TooltipBackground}" 
           BorderThickness="{TemplateBinding TooltipBorderThickness}" 
           CornerRadius="{TemplateBinding TooltipCornerRadius}" 
           > 
          <StackPanel> 
           <TextBlock 
              Text="{TemplateBinding TooltipText}" 
              Foreground="{TemplateBinding TooltipFontColour}" 
              FontStyle="{TemplateBinding TooltipFontStyle}" 
              FontFamily="{TemplateBinding TooltipFontFamily}" 
              FontSize="{TemplateBinding TooltipFontSize}" 
              FontWeight="{TemplateBinding TooltipFontWeight}" 
              Margin="{TemplateBinding TooltipTextMargin}" 
              > 
           </TextBlock> 
          </StackPanel> 
         </Border> 
        </Grid.ToolTip> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="TooltipText" Value=""> 
         <Setter Property="ToolTipService.IsEnabled" Value="False"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

ответ

0

Вам не нужно определить ToolTip как: ToolTipService.ToolTip, а затем добавить триггер, чтобы отключить его, ToolTip уже делает вся логика в фоновом режиме.

Объявить свой ToolTip непосредственно на сетке, как это:

<Grid> 
    <Grid.ToolTip> 
    Add your tool tip stuff here... 
    </Grid.ToolTip> 
</Grid> 

Редактировать Измените триггер так:

<Trigger Property="TooltipText" Value=""> 
    <Setter TargetName="LayoutRoot" Property="ToolTip" Value="{x:Null}"/> 
</Trigger> 

Это заставит сетку удалить ToolTip когда текст является "".

+0

Спасибо за ваш быстрый ответ. Я изменил мне xaml, как вы предложили. Моя подсказка по-прежнему отображается, даже когда я не задал ей никакого текста. Я изменил свой фрагмент кода, чтобы отразить изменения, которые я сделал. –

+0

@SimonHarrison Я обновил свой ответ. – Xtr

+0

Благодарим за помощь :-) –

Смежные вопросы