Pregunta

Tengo una rejilla de WPF que contiene, entre otras cosas, un botón.

El botón está oculto por defecto, y sólo se hacen visibles cuando el ratón está sobre la rejilla. (Funcionalmente, la red es una cabecera de pestaña, y el botón de "desaparecer" es un botón de cierre). También me volvió a escribir la plantilla botón para tener una sensación personalizado.

Ahora, el botón se hace visible cuando el ratón entra en la parrilla, pero desaparece tan pronto como el ratón entra en el botón. Mi intuición es que IsMouseOver de la cuadrícula se convierte en falsa cuando se mueve el ratón sobre el botón a. ¿Hay una manera de evitar esto?

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

Gracias!

¿Fue útil?

Solución

veo ningún problema aquí. Lo he probado con una simple ventana con una rejilla:

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

Tal vez la rejilla de matriz falta un color Background? Como se puede ver que he hecho mi Grid Transparent. Cuando lo saco, no se mostrará el botón.

Tal vez añadir un poco más de código?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top