Manter propriedades visuais padrão com ControlTemplate

votos
0

Para aplicar uma animação desencadeada a todos os ToolTips em meu aplicativo, eu estou usando um ControlTemplate. No entanto, quando se utiliza um ControlTemplatea ToolTipperde todas as suas propriedades visuais padrões definidos, creio eu, pelo tema. Como posso manter todas as propriedades, exceto para aqueles que substituir?

Usando o seguinte código

<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>

Recebo o resultado que eu quero:

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

Mas quando eu ajustar o código para usar um ControlTemplateassim:

<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>

Eu recebo a seguinte:

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

Como você pode ver, a fronteira padrão tema de fundo, etc. não são mantidos. Eu não quero para definir estes explicitamente como eu quero que eles ajustar de acordo com o tema do usuário. Como posso resolver isso? Eu vou sobre este o caminho errado?

Publicado 26/08/2009 em 22:50
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Você não pode herdar ControlTemplate de estilo de tema. Mas você não tem que. Use DataTemplates para conseguir o que deseja. Aqui está um exemplo rápido:

<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>

Você pode colá-lo em Kaxaml , e testá-lo.

Espero que isto ajude.

Respondeu 02/09/2009 em 10:36
fonte usuário

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