最近做一个项目用到ListBox,需要在ListBox中横向动态添加图片,此功能以实现,现在发现一个问题,当点击listbox中的图片时 当点击完一个在点击其他的图片时,上一张图片的选中状态没有取消,我再网上查了一下似乎是ListBox的Bug,请问有没有比较好的解决办法?????
解决方案 »
- Dictionary<string, DataStruct.OnLineUsers> 类型的数据,在socket通信里怎么在字节数组类型之间相互转化?
- 你绝对没见过的C# Winform错误
- C# 问串口问题()
- attribute System.Xml.Serialization.XmlAttributeAttribute
- 谁能说说ExtractRowValues的用法?
- 关于WPF的问题,关于WPF的疑问,学习WPF的一起探讨。
- WinForm背景图片问题
- winform问题.怎么样增加一条数据
- 急急急!!!!!!!!!!!!!!!!!
- asp repeater控件循环显示图片的问题
- 按分组显示的listview 双击组标题(group header)弹出一个窗口,请大牛们给个思路或是方法.
- 请问有谁做过“映射驱动盘符”?
<ListBox x:Name="lb" Background="Transparent" UIElement.MouseLeftButtonDown="lb_MouseLeftButtonDown" BorderBrush="Transparent" ItemsSource="{Binding slPic}" Grid.Column="0" Grid.Row="2" ScrollViewer.VerticalScrollBarVisibility="Hidden" Height="170" ItemsPanel="{StaticResource HorizontalTemplate}" ItemTemplate="{StaticResource picDataTemplate}" SelectionMode="Single">
</ListBox> <Window.Resources>
<ItemsPanelTemplate x:Key="HorizontalTemplate">
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
<DataTemplate x:Key="picDataTemplate">
<Image Source="{Binding slPic}" Height="130" Margin="0.6,0.0,6.0,0.0" Cursor="Hand" MouseLeftButtonDown="Image_MouseLeftButtonDown"/>
</DataTemplate>
</Window.Resources>
<!-- DataTemplate for Photograph instances -->
<DataTemplate x:Key="PhotographTemplate">
<Grid Margin="6">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Viewbox Height="100" Width="100" VerticalAlignment="Bottom">
<Border BorderBrush="#FF999999" BorderThickness="2" Padding="10">
<ContentControl Content="{Binding Image}" />
</Border>
</Viewbox>
<ContentControl Grid.Row="1" Content="{Binding Name}" HorizontalAlignment="Center" FontSize="10" />
</Grid>
</DataTemplate> 回复内容太长:下续
<!-- A smoothed out ListBoxItem style -->
<Style x:Key="SmoothListBoxItem" TargetType="ListBoxItem">
<Setter Property="IsEnabled" Value="true" />
<Setter Property="Foreground" Value="#FF000000" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="VerticalContentAlignment" Value="Top" />
<Setter Property="Cursor" Value="Arrow" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Background" Value="White" />
<Setter Property="Padding" Value="2,0,0,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid Background="{TemplateBinding Background}">
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="CommonStates">
<vsm:VisualState x:Name="Normal" />
<vsm:VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="HoverOverlay" Storyboard.TargetProperty="Opacity" To=".75" Duration="0" />
<ColorAnimation Storyboard.TargetName="fillStop0Hover" Storyboard.TargetProperty="Color" To="#FFF9FAFA" Duration="0" />
<ColorAnimation Storyboard.TargetName="fillStop1Hover" Storyboard.TargetProperty="Color" To="#FFD6DFE7" Duration="0" />
<ColorAnimation Storyboard.TargetName="fillStop2Hover" Storyboard.TargetProperty="Color" To="#FFD3E4F5" Duration="0" />
<ColorAnimation Storyboard.TargetName="strokeStop0Hover" Storyboard.TargetProperty="Color" To="#00000000" Duration="0" />
<ColorAnimation Storyboard.TargetName="strokeStop1Hover" Storyboard.TargetProperty="Color" To="#00000000" Duration="0" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="SelectionStates">
<vsm:VisualState x:Name="Unselected" />
<vsm:VisualState x:Name="Selected">
<Storyboard>
<ColorAnimation Storyboard.TargetName="fillStop0" Storyboard.TargetProperty="Color" To="#FFD9EFFF" Duration="0" />
<ColorAnimation Storyboard.TargetName="fillStop1" Storyboard.TargetProperty="Color" To="#FFBDD2E6" Duration="0" />
<ColorAnimation Storyboard.TargetName="fillStop2" Storyboard.TargetProperty="Color" To="#FFA1B6CD" Duration="0" />
<ColorAnimation Storyboard.TargetName="strokeStop0" Storyboard.TargetProperty="Color" To="#FF77B9EB" Duration="0" />
<ColorAnimation Storyboard.TargetName="strokeStop1" Storyboard.TargetProperty="Color" To="#FF4887CD" Duration="0" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="FocusStates">
<vsm:VisualState x:Name="Focused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisual" Storyboard.TargetProperty="Visibility" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Unfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="FocusVisual" Storyboard.TargetProperty="Visibility" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups> <Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions> <Rectangle IsHitTestVisible="False">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.316111,0.0165521" EndPoint="0.316111,0.724833">
<GradientStop x:Name="fillStop0" Color="#00000000" Offset="0"/>
<GradientStop x:Name="fillStop1" Color="#00000000" Offset="0.682203"/>
<GradientStop x:Name="fillStop2" Color="#00000000" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.Stroke>
<LinearGradientBrush StartPoint="0.318122,0.0360108" EndPoint="0.318122,0.715784">
<GradientStop x:Name="strokeStop0" Color="#00000000" Offset="0"/>
<GradientStop x:Name="strokeStop1" Color="#00000000" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
<Rectangle x:Name="HoverOverlay" IsHitTestVisible="False" Opacity="0">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.316111,0.0165521" EndPoint="0.316111,0.724833">
<GradientStop x:Name="fillStop0Hover" Color="#00000000" Offset="0"/>
<GradientStop x:Name="fillStop1Hover" Color="#00000000" Offset="0.682203"/>
<GradientStop x:Name="fillStop2Hover" Color="#00000000" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.Stroke>
<LinearGradientBrush StartPoint="0.318122,0.0360108" EndPoint="0.318122,0.715784">
<GradientStop x:Name="strokeStop0Hover" Color="#00000000" Offset="0"/>
<GradientStop x:Name="strokeStop1Hover" Color="#00000000" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle> <Border x:Name="FocusVisual" BorderBrush="#FF0B8BAA" BorderThickness="1" CornerRadius="4" Visibility="Collapsed" IsHitTestVisible="False" />
<ContentPresenter
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalAlignment="Left" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> <!-- ListBox template that uses a WrapPanel -->
<Style x:Key="WrapListBox" TargetType="ListBox">
<Setter Property="ItemContainerStyle" Value="{StaticResource SmoothListBoxItem}" />
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<controlsToolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>