Переключить подсказку для элемента управления Button, используя только XAML - PullRequest
2 голосов
/ 02 сентября 2010

Название объясняет конечную цель.

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

Мой XAML:

<Button x:Name="btn" Height="24" Margin="107,59,109,0" VerticalAlignment="Top">
    <ToolTipService.ToolTip>
        <TextBlock>Hi</TextBlock>
    </ToolTipService.ToolTip>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ei:ChangePropertyAction TargetObject="{Binding ElementName=btn}" PropertyName="ToolTipService.ToolTip" Value="Jeroen"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Image x:Name="icon" Height="16" Source="Images/FaceSad.png" Stretch="Fill" Width="16"/>
</Button>

Я делаю это для дизайнера, который работает исключительно в XAML, и я не хочу использовать C #.Это возможно?И кто-нибудь знает, как это сделать с помощью триггера XAML и EventTriggers?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2010

ChangePropertyAction - довольно упрощенный объект, он буквально ищет открытое свойство с именем «ToolTipService.ToolTip». Он не анализирует это имя, чтобы определить его свойство Attached.

Ваш код в настоящее время опирается на сервис подсказок, создающий для вас элемент управления Tooltip, но если вы создаете его самостоятельно, вы можете дать ему имя, на которое можно ссылаться. Затем вы можете манипулировать его Content свойством. Как это: -

<Button x:Name="btn" Height="24" Margin="107,59,109,0" VerticalAlignment="Top">
    <ToolTipService.ToolTip>
        <ToolTip x:Name="btnToolTip">
          <TextBlock>Hi</TextBlock>
        </ToolTip>
    </ToolTipService.ToolTip>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <ei:ChangePropertyAction TargetObject="{Binding ElementName=btnToolTip}" PropertyName="Content">
              <ei:ChangePropertyAction.Value>
                <TextBlock>Jeroen</TextBlock>
              </ei:ChangePropertyAction.Value>
            </ei:ChangePropertyAction>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Image x:Name="icon" Height="16" Source="Images/FaceSad.png" Stretch="Fill" Width="16"/>
</Button>
0 голосов
/ 03 сентября 2010

Так же, как примечание:

Это не помогло мне достичь своей цели, как указано в названии, и в итоге я сделал следующее:

Во-первых, в UserControl я добавил:

< ... ToolTipService.ToolTip="Happy" Tag="Happy|Sad" MouseLeftButtonUp="ToolTipSwitch" />

Тогда у меня есть эта функция в моем коде:

    private void ToolTipSwitch(object sender, RoutedEventArgs e)
    {
        // ...
        // Whatever is in the code for a MouseButtonUp
        // ...

        #region ToolTip switch code

        UserControl tooltipParent = sender as UserControl;
        Char[] pipe = {'|'};
        String[] tooltips = tooltipParent.Tag.ToString().Split(pipe, StringSplitOptions.None);
        if (ToolTipService.GetToolTip(tooltipParent).ToString() == tooltips[0])
            ToolTipService.SetToolTip(tooltipParent, tooltips[1]);
        else if (ToolTipService.GetToolTip(tooltipParent).ToString() == tooltips[1])
            ToolTipService.SetToolTip(tooltipParent, tooltips[0]);

        #endregion ToolTip switch code
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...