مشكلة WPF مع Visibiliy of Button عندما يسدد السلف isMouseover
-
29-09-2019 - |
سؤال
لدي شبكة WPF التي تحتوي ، من بين أشياء أخرى ، على زر.
يتم إخفاء الزر افتراضيًا ، ويجب أن يصبح مرئيًا فقط عندما يكون الماوس فوق الشبكة. (من الناحية الوظيفية ، الشبكة هي رأس علامة تبويب ، وزر "الاختفاء" هو زر إغلاق). أنا أيضا إعادة كتابة قالب الزر للحصول على شعور مخصص.
الآن ، يصبح الزر مرئيًا عندما يدخل الماوس الشبكة ، لكنه يختفي بمجرد دخول الماوس إلى الزر. حدسي هو أن Ismouseover للشبكة يصبح خطأ عندما ينتقل الماوس إلى الزر. هل هناك طريقة للتغلب على ذلك؟
<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>
شكرًا!
المحلول
لا أرى أي مشاكل هنا. لقد اختبرته مع نافذة بسيطة مع شبكة:
<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>
ربما تكون الشبكة الوالدية مفقودة Background
اللون؟ كما ترى لقد صنعت بلدي Grid
Transparent
. عندما أقوم بإزالته ، لن يعرض الزر.
ربما أضف المزيد من التعليمات البرمجية؟
لا تنتمي إلى StackOverflow