Zachování výchozí vizuální vlastnosti se ControlTemplate

hlasů
0

Aby bylo možno použít spuštěného animaci ke všem ToolTipv mé aplikaci jsem pomocí ControlTemplate. Nicméně, při použití ControlTemplateTHE ToolTipztratí všechny jeho výchozí vizuální vlastnosti, jak je definováno, věřím, že by téma. Jak mohu zachovat všechny vlastnosti, s výjimkou těch, které jsem přepsat?

Pomocí následující kód

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

I ten výsledek chci:

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

Ale když jsem upravit kód použít ControlTemplatetak, aby:

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

Mám následující:

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

Jak můžete vidět, výchozí motiv rámeček, pozadí, atd. Nejsou zachovány. Nechci nastavit tyto výslovně, jak chci, aby přizpůsobit podle tématu uživatele. Jak lze tuto situaci napravit? Budu o to špatně?

Položena 26/08/2009 v 22:50
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Nemůžete zdědit ControlTemplate od zábavního stylu. Ale vy nemusíte. Použijte DataTemplates dosáhnout toho, co chcete. Zde je rychlý příklad:

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

Můžete jej vložit do Kaxaml , a vyzkoušet.

Snad to pomůže.

Odpovězeno 02/09/2009 v 10:36
zdroj uživatelem

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