Frage

Ich habe ein WPF-Raster, das unter anderem enthält, auf einen Knopf.

Die Taste ist standardmäßig ausgeblendet und soll nur sichtbar werden, wenn die Maus das Gitter ist vorbei. (Funktionell ist das Gitter ein Leiste, und die „verschwinden“ Taste ist eine Schließtaste). Ich auch auf die Schaltfläche Vorlage neu geschrieben ein eigenes Gefühl zu haben.

Nun wird die Schaltfläche sichtbar, wenn meine Maus, um das Gitter eintritt, verschwindet aber, sobald die Maus auf die Schaltfläche gelangt. Meine Intuition ist, dass das Netz der IsMouseOver falsch wird, wenn die Maus bewegt sich auf die Schaltfläche. Gibt es eine Möglichkeit, um dieses?

       <ControlTemplate x:Key="CloseTabButtonTemplate">
            <Border Width="14" Height="14" Margin="3"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Center"

                    BorderThickness="1"
                    CornerRadius="2,2,2,2">
                <TextBlock Text="x" VerticalAlignment="Center" HorizontalAlignment="Center"
                           FontSize="11" Padding="0" Margin="0,-2,0,0" Foreground="White"/>
                <Border.Style>

                    <Style TargetType="{x:Type Border}">
                        <Setter Property="Background" Value="#33DA3030"/>
                        <Setter Property="BorderBrush" Value="White"/>
                        <Setter Property="Visibility" Value="Hidden"/>
                        <Style.Triggers>                                
                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Grid}},Path=IsMouseOver}" Value="True">
                                <Setter Property="Visibility" Value="Visible" />
                            </DataTrigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="Background" Value="#FFDA3030"/>
                                <Setter Property="Visibility" Value="Visible" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>
            </Border>
        </ControlTemplate>          

<Button Grid.Column="2" HorizontalAlignment="Right" Template="{StaticResource CloseTabButtonTemplate}">x</Button>

Danke!

War es hilfreich?

Lösung

Ich sehe hier keine Probleme. Ich habe es mit einem einfachen Fenster mit einem Gitter getestet:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"
        >

    <Window.Resources>

        <ControlTemplate x:Key="CloseTabButtonTemplate">
            .... Your template as in the question ....
        </ControlTemplate>

    </Window.Resources>

    <Grid x:Name="MainGrid" Width="200" Height="200" Background="Transparent">

        <Button Template="{StaticResource CloseTabButtonTemplate}" />

    </Grid>
</Window>

Vielleicht ist die Mutter Gitter fehlt ein Background Farbe? Wie Sie sehen, ich habe meine Grid Transparent gemacht. Wenn ich es entfernen, es wird die Taste nicht an.

Vielleicht ein wenig mehr Code hinzufügen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top