Le maintien des propriétés visuelles par défaut avec ControlTemplate

voix
0

Pour appliquer une animation déclenchée à tous ToolTips dans mon application, je suis sur un ControlTemplate. Cependant, lorsque vous utilisez un ControlTemplatela ToolTipperd toutes ses propriétés visuelles par défaut tel que défini, je crois, par le thème. Comment puis - je conserver toutes les propriétés à l' exception de ceux que je passer outre?

En utilisant le code suivant

<ToolTip Opacity=0.8>
  <ToolTip.Content>
    <StackPanel>
      <Label FontWeight=Bold Background=DarkSlateBlue Foreground=White>
        WpfApplication1
      </Label>
      <Label>
        Click to create another button
      </Label>
    </StackPanel>
  </ToolTip.Content>
</ToolTip>

Je reçois le résultat que je veux:

alt texte http://img29.imageshack.us/img29/1488/controltemplateno.png

Mais quand je règle le code à utiliser ControlTemplatecomme ceci:

<ControlTemplate x:Key=controltemplateToolTip TargetType={x:Type ToolTip}>
  <ContentPresenter Content={TemplateBinding Content} />  
  <ControlTemplate.Triggers>
    <EventTrigger RoutedEvent=ToolTip.Loaded>
      <BeginStoryboard>
        <Storyboard TargetProperty=Opacity>
          <DoubleAnimation From=0 To=0.8 Duration=0:0:0.2 />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType={x:Type ToolTip}>
  <Setter Property=Template Value={StaticResource controltemplateToolTip} />
</Style>
...
<ToolTip>
  <ToolTip.Content>
    <StackPanel>
      <Label FontWeight=Bold Background=DarkSlateBlue Foreground=White>
        WpfApplication1
      </Label>
      <Label>
        Click to create another button
      </Label>
    </StackPanel>
  </ToolTip.Content>
</ToolTip>

Je reçois le texte suivant:

alt texte http://img43.imageshack.us/img43/8217/controltemplateyes.png

Comme vous pouvez le voir, la frontière par défaut de thème, arrière-plan, etc. ne sont pas entretenus. Je ne veux pas définir ces explicitement que je veux qu'ils s'adapter en fonction du thème de l'utilisateur. Comment puis-je remédier à cette situation? Est-ce que je vais sur ce dans le mauvais sens?

Créé 26/08/2009 à 22:50
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Vous ne pouvez pas hériter ControlTemplate de style thème. Mais vous n'avez pas. Utilisez DataTemplates pour obtenir ce que vous voulez. Voici un exemple rapide:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
  <Style TargetType="{x:Type ToolTip}">
  <Style.Triggers>
    <EventTrigger RoutedEvent="ToolTip.Loaded">
      <BeginStoryboard>
        <Storyboard TargetProperty="Opacity">
          <DoubleAnimation From="0" To="0.8" Duration="0:0:0.5" />
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </Style.Triggers>
  </Style>

<DataTemplate x:Key="ToolTipContentTemplate">
<StackPanel>
      <Label FontWeight="Bold" Background="DarkSlateBlue" Foreground="White">
        WpfApplication1
      </Label>
      <Label>
        Click to create another button
      </Label>
    </StackPanel>
</DataTemplate>
  </Page.Resources>

  <Grid>  
<Button Content="Hello">
<Button.ToolTip>
<ToolTip ContentTemplate="{StaticResource ToolTipContentTemplate}">
  <ToolTip.Content>
    Doesn't matter in this case
  </ToolTip.Content>
</ToolTip>
</Button.ToolTip>
</Button>
  </Grid>
</Page>

Vous pouvez le coller à Kaxaml , et le tester.

J'espère que cela t'aides.

Créé 02/09/2009 à 10:36
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more