• 感觉还不错,值得借鉴的一个listbox样式


    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <Grid>
          <ListBox
               Name="lb"
               Width="100"
               Height="100"
               Background="Red"
               SelectionMode="Single">
               <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                         <UniformGrid Columns="1"/>
                    </ItemsPanelTemplate>
               </ListBox.ItemsPanel>
               <ListBoxItem Background="AliceBlue">Item 1    
               </ListBoxItem>
               <ListBoxItem Background="Aquamarine">Item 
               </ListBoxItem>
               <ListBoxItem Background="Azure">Item 
               </ListBoxItem>
               <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}">
                         <Setter Property="Visibility" Value="Visible"/>
                         <Style.Triggers>
                              <MultiDataTrigger>
                                   <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="False"/>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Path=SelectedItems.Count}" Value="1"/>
                                   </MultiDataTrigger.Conditions>
                                   <MultiDataTrigger.EnterActions>
                                        <BeginStoryboard>
                                             <Storyboard Duration="0:0:1">
                                                  <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                                       <DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Collapsed}"/>
                                                  </ObjectAnimationUsingKeyFrames>
                                                  <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="Opacity" To="0"/>
                                             </Storyboard>
                                        </BeginStoryboard>
                                   </MultiDataTrigger.EnterActions>
                              </MultiDataTrigger>
                              <MultiDataTrigger>
                                   <MultiDataTrigger.Conditions>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True"/>
                                        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Path=SelectedItems.Count}" Value="1"/>
                                   </MultiDataTrigger.Conditions>
                                   <MultiDataTrigger.EnterActions>
                                        <BeginStoryboard>
                                             <Storyboard Duration="0:0:0">
                                                  <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                                       <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
                                                  </ObjectAnimationUsingKeyFrames>
                                                  <DoubleAnimation Duration="0:0:0" Storyboard.TargetProperty="Opacity" To="1"/>
                                             </Storyboard>
                                        </BeginStoryboard>
                                   </MultiDataTrigger.EnterActions>
                              </MultiDataTrigger>
                         </Style.Triggers>
                    </Style>
               </ListBox.ItemContainerStyle>
               <ListBox.Style>
                    <Style>
                         <Style.Triggers>
                              <Trigger Property="ListBox.IsMouseOver" Value="False">
                                   <Setter Property="ListBox.SelectedItem" Value="{x:Null}"/>
                                   <Setter Property="ListBoxItem.IsSelected" Value="False"/>
                                   <Setter Property="ListBox.SelectedIndex" Value="-1"/>
                              </Trigger>
                              <EventTrigger RoutedEvent="Mouse.MouseLeave">
                                   <BeginStoryboard>
                                        <Storyboard>
                                             <Int32Animation Duration="0:0:0" Storyboard.TargetProperty="SelectedIndex" To="-1"/>
                                        </Storyboard>
                                   </BeginStoryboard>
                              </EventTrigger>
                         </Style.Triggers>
                    </Style>
               </ListBox.Style>
          </ListBox>
     </Grid>
    </Page>
        
    <Page.Resources>
        <Style x:Key="CustomStyle" TargetType="{x:Type ListBoxItem}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="False"/>
                        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}},Path=SelectedItems.Count}" Value="1"/>
                    </MultiDataTrigger.Conditions>
                    <MultiDataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard Duration="0:0:1">
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Collapsed}"/>
                                </ObjectAnimationUsingKeyFrames>
                                <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="Opacity" To="0"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.EnterActions>
                    <MultiDataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard Duration="0:0:0">
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
                                </ObjectAnimationUsingKeyFrames>
                                <DoubleAnimation Duration="0:0:0" Storyboard.TargetProperty="Opacity" To="1"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </MultiDataTrigger.ExitActions>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Page.Resources>
    
    <Grid>
        <ListBox
           Name="lb"
           Width="100"
           Height="100"
           Background="Red"
           SelectionMode="Single">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="1"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBoxItem Background="AliceBlue">Item 1
            </ListBoxItem>
            <ListBoxItem Background="Aquamarine">Item
            </ListBoxItem>
            <ListBoxItem Background="Azure">Item
            </ListBoxItem>
            <ListBox.Style>
                <Style>
                    <Style.Triggers>
                        <Trigger Property="ListBox.IsMouseOver" Value="True">
                            <Setter 
                                Property="ListBox.ItemContainerStyle" 
                                Value="{StaticResource CustomStyle}"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListBox.Style>
        </ListBox>
    </Grid>
  • 相关阅读:
    裂项相消
    斜率和问题
    抛物线与椭圆
    数列通项
    双曲线离心率
    优化问题
    单调性讨论
    角平分线
    隐零点
    自动任务调度系统
  • 原文地址:https://www.cnblogs.com/AaronYang/p/2480799.html
Copyright © 2020-2023  润新知