<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}"/>
特殊的 ListBox (WPF Code)
最新推荐文章于 2024-05-19 16:07:06 发布