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

Я хотел иметь хорошие ToolTip для своих TextBox, поэтому я начал с простых ToolTip:

   <TextBox>
       <TextBox.ToolTip>
           <StackPanel>
               <TextBlock>Nice text</TextBlock>
               <TextBlock>Nice text</TextBlock>
           </StackPanel>
       </TextBox.ToolTip>
   </TextBox>

Однако у меня есть дюжина TextBox э, и я хотел, чтобы они всеиметь ToolTip выше.Вот почему я решил перенести приведенный выше код в файл Style.

Мой Style файл выглядит следующим образом:

   <Style x:Key="DefaultStyle" TargetType="{x:Type TextBox}">
    <Setter Property="FontFamily" Value="Tahoma"/>
    <Setter Property="FontSize" Value="15"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="TextAlignment" Value="Center"/>
    <Setter Property="TextWrapping" Value="Wrap"/>
    <Setter Property="BorderBrush" Value="#A9C2DE"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" >
                <GradientStop Color="#CDE1F7" Offset="0.01"/>
                <GradientStop Color="#DFECFA" Offset="0.8" />
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="ToolTip">
        <Setter.Value>
            <StackPanel>
                <TextBlock Text="Nice toolbox"/>
                <TextBlock Text="Nice tooltip"/>
            </StackPanel>
        </Setter.Value>
    </Setter>
</Style>

Однако теперь я получаю ошибку синтаксического анализа XAML.

Как установить этот тип ToolTipStackPanel с и т. Д.) До TextBox (из файла стиля) ??

1 Ответ

3 голосов
/ 21 августа 2010

Версия Dotnet <4 </strong>

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

<ToolTip x:Key="YourToolTip" >        
    <StackPanel>
        <TextBlock Text="Nice toolbox"/>
        <TextBlock Text="Nice tooltip"/>
    </StackPanel>
</ToolTip>

... Your Style...
<Setter Property="TextBox.ToolTip" Value="{StaticResource YourToolTip}"/>
...

Версия Dotnet == 4

Если вы работаете с .net4, эточто-то другое.Вы написали, что поместили его в файл стиля.Вы имеете в виду файл ресурсов?Если да, возможно, вы не загрузили его во время выполнения.Что-то вроде:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/YourStyleFile.xaml"/>
            <ResourceDictionary>
                 <!-- Other local resources -->
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

Другая возможность состоит в том, что вы пытаетесь использовать его для другого типа, чем TextBox.Это не работает, потому что вы объявили TextBox в качестве целевого типа.

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