WPF - Настройка пользовательской подсказки с использованием триггеров стилей - PullRequest
2 голосов
/ 27 августа 2010

Я пытаюсь отобразить подсказку для панели стека на основе свойства HasValidationError.

        <Style TargetType="StackPanel" x:Key="stackstyle">
            <Style.Triggers>
                <DataTrigger Binding="{Binding HasValidationError}" Value="True">
                    <Setter Property="ToolTip">
                        <Setter.Value>
                            <Binding Path="DisplayError"/>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>

Код работает нормально.Но он отображает подсказку под желтым фоном (как обычная подсказка).Мне нужно настроить его, чтобы изменить и включить изображение.Для этого

        <Style TargetType="StackPanel" x:Key="stackstyle">
            <Style.Triggers>
                <DataTrigger Binding="{Binding HasValidationError}" Value="True">
                    <Setter Property="ToolTip">
                        <Setter.Value>
                            <StackPanel>
                                 <!-- Have to add image and other decorations here -->
                                 <TextBlock Text = "{Binding DisplayError}"/>
                            </StackPanel>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>

Отображается ошибка при добавлении StackPanel в.Пожалуйста, помогите мне в решении.

1 Ответ

4 голосов
/ 27 августа 2010

Я не знаю, почему это не помогает, но вы можете обойти это, сделав подсказку ресурсом:

<StackPanel x:Key="ToolTipContents">
    <!-- Have to add image and other decorations here -->
    <TextBlock Text = "{Binding DisplayError}"/>
</StackPanel>
<Style TargetType="StackPanel" x:Key="stackstyle">
    <Style.Triggers>
        <DataTrigger Binding="{Binding HasValidationError}" Value="True">
            <Setter Property="ToolTip" Value="{StaticResource ToolTipContents}"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

или

<ToolTip x:Key="ToolTipContents">
    <StackPanel>
        <!-- Have to add image and other decorations here -->
        <TextBlock Text = "{Binding DisplayError}"/>
    </StackPanel>
</ToolTip>
<!-- etc -->

Кроме того, ваш код будет работать так, как написано в .NET 4, поэтому ошибка была исправлена.

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