[wpf] وف ليستبوكس إظهار زر في إيتمتمبلات على موسوفر


1 Answers

هذا Style يفعل ما تحتاجه. في الماوس فوق، يصبح الزر مرئيا فقط عندما يكون المؤشر فوق ListBoxItem . خدعة خاصة هو ربط إلى IsMouseOver للوصول إلى IsMouseOver واستخدام IsMouseOver على Setter فقط تؤثر على Button .

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <Border BorderBrush="Black"
                        BorderThickness="1"
                        Margin="6">
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Path=FullPath}"
                               Height="150"
                               Width="150" />
                        <Button x:Name="sideButton"
                                Width="20"
                                Visibility="Hidden" />
                    </StackPanel>
                </Border>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding IsMouseOver,RelativeSource={RelativeSource TemplatedParent}}"
                                 Value="True">
                        <Setter Property="Visibility"
                                TargetName="sideButton"
                                Value="Visible" />
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
Question

لدي قائمة تحتوي على وصورة وزر. افتراضيا الزر مخفي. أريد جعل الزر مرئيا كلما حرك مؤشر الماوس فوق عنصر في مربع القائمة. و زمل أنا باستخدام أدناه. شكر

<Window.Resources>
        <Style TargetType="{x:Type ListBox}">
    <Setter Property="ItemTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <Border BorderBrush="Black" BorderThickness="1" Margin="6">
                                <StackPanel Orientation="Horizontal">
                                    <Image Source="{Binding Path=FullPath}" Height="150" Width="150"/>
                                    <Button x:Name="sideButton" Width="20" Visibility="Hidden"/>
                                </StackPanel>
                            </Border>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
        </Style>
    </Window.Resources>



حل واحد للعثور على ما تم النقر فوق البند هو إضافة واضعة الحدث التالية

XAML

C # فواد ListBoxItem_MouseEnter (مرسل الكائن، موسيفنتارغس ه) {_memberVar = (المرسل ك ليستبوكسيتم) .Content؛ }






Related



Tags

wpf   listbox