特殊的 ListBox (WPF Code)

    <Window.Resources>
      <!--ListBoxItem Style-->
        <Style x:Key="lbiOri" TargetType="{x:Type ListBoxItem}">
            <Style.Resources>
                <SolidColorBrush Color="#FF6DD48F" x:Key="{x:Static SystemColors.HighlightBrushKey}"/>
                <SolidColorBrush Color="Black" x:Key="{x:Static SystemColors.HighlightTextBrushKey}"/>
                <SolidColorBrush Color="#FF6DD48F"  x:Key="{x:Static SystemColors.ControlBrushKey}"/>                  
                <SolidColorBrush Color="Black" x:Key="{x:Static SystemColors.ControlTextBrushKey}"/>
            </Style.Resources>
            <EventSetter Event="Selected" Handler="item_MouseLeftButtonDown"/>            
        </Style>      

      <!--ListBox ControlTemplate-->
        <Style x:Key="listBox" TargetType="{x:Type ListBox}">                             
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBox}">
                        <Border  CornerRadius ="6" 
                        Background="LightGreen" 
						BorderBrush="{TemplateBinding Border.BorderBrush}"
						BorderThickness="{TemplateBinding Border.BorderThickness}">                           
                            <!--以下句是重点ScrollViewer设置了listbox只能是垂直的
                                WrapPanel设置ScrollView的内容是可以换行显示的,并且WrapPanel是项的宿主-->
                            <ScrollViewer  VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
                                <WrapPanel IsItemsHost="True" />   
                            </ScrollViewer>                           
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>


            <!--ListBox DataTemplate-->
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Grid Name="bgGrid" 
                              MouseEnter="bgGrid_MouseEnter" 
                              MouseLeave="bgGrid_MouseLeave">                                                              
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition  Width="140"  />
                                <ColumnDefinition  Width="80"  />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition  Height="200" />
                                <RowDefinition  Height="30" />
                            </Grid.RowDefinitions>


                            <Border Grid.Row="0"  Grid.Column="0" Grid.ColumnSpan="2" Margin="25,20,25,0" 
                                    BorderThickness="2" CornerRadius="4" HorizontalAlignment="Center">
                                <Border.BorderBrush>
                                    <LinearGradientBrush>
                                        <GradientStop Color="#aaa" Offset="0" />
                                        <GradientStop Color="#222" Offset="1" />
                                    </LinearGradientBrush>
                                </Border.BorderBrush>
                                
                                <Grid Name="iconShow"  MouseEnter="iconShow_MouseEnter" MouseLeave="iconShow_MouseLeave">
                                    <Rectangle>
                                        <Rectangle.Fill>
                                            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                                <GradientStop Color="LightGreen" Offset="0" />
                                                <GradientStop Color="#FF6DC230" Offset="1" />
                                            </LinearGradientBrush>
                                        </Rectangle.Fill>
                                    </Rectangle>
                                    <Image Stretch="Fill" Width="120" Height="160" Margin="2"
                                           Source="Images\default.jpg" ToolTip="暂无预览图"/>
                                    <Image Stretch="Fill" Width="160" Height="200"  Margin="2" 
                                           Source="{Binding Path}" Name="imgMedia"/>
                                    <Image Name="imgTry"  Stretch="Fill" Width="90" Height="65" Cursor="Hand"
                                           Source="Images\start1.png" Visibility="Hidden" MouseLeave="imgTry_MouseLeave"
                                           MouseEnter="imgTry_MouseEnter"  MouseLeftButtonDown="imgTry_MouseLeftButtonDown"
                                           MouseLeftButtonUp="imgTry_MouseLeftButtonUp"/>                                  
                                </Grid>
                            </Border>

                            <TextBlock Name="tbkName"  Grid.Row="1" Grid.Column="0"  FontSize="14" HorizontalAlignment="Center"
                                       Margin="65,5,0,5" Text="{Binding MediaName}" TextTrimming="CharacterEllipsis"
                                       ToolTip="{Binding Path=Text, RelativeSource={x:Static RelativeSource.Self}}"/>
                            <RadioButton Grid.Row="1" Grid.Column="1" Margin="0,7,30,5" 
                                         IsChecked="{Binding Path=IsChoosed,NotifyOnTargetUpdated=True,Mode=TwoWay}"  
                                         Name="rbChoose" Content="" GroupName="rb"/>
                        </Grid>
                    </DataTemplate>
                </Setter.Value>
            </Setter>                    
        </Style>
       
        <!--ListBox ScrollBar-->
        <Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
            <Setter Property="Background" Value="#FF6DC255"/>
            <Setter Property="Opacity" Value="0.6"/>   
        </Style>
    </Window.Resources>

    <!--Use it-->
        <ListBox Grid.Row="1" Grid.Column="2" Margin="5" Height="280" Name="mediaList"
                 Style="{StaticResource ResourceKey=listBox}"
                 ItemContainerStyle="{StaticResource lbiOri}"/>            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值