0
我有以下代码列出列表框中的图像。目前我有一个在IsMouseOver上显示弹出窗口的鼠标悬停事件。我试图找出如何将其更改为IsSelected,但在当前上下文中不存在。有没有办法改变绑定,以便在选择项目时打开弹出窗口?我试图从代码隐藏(SelectionChanged)做到这一点,但我无法定位弹出窗口。当列表框中的项目IsSelected时打开弹出框
<ListBox ItemContainerStyle="{StaticResource Fisk}" x:Name="listy" ItemsSource="{Binding Images}" Margin="40,0,0,0" Grid.Row="1" Grid.Column="1" Background="{x:Null}" BorderBrush="{x:Null}" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden" KeyDown="listy_KeyDown" Loaded="listy_Loaded" SelectionChanged="listy_SelectionChanged">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<vwp:VirtualizingWrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="item">
<Image Width="250" ToolTipService.Placement="Center">
<Image.Source>
<BitmapImage UriSource="{Binding Path=., Mode=OneWay,UpdateSourceTrigger=Explicit}" CreateOptions="DelayCreation" CacheOption="None" />
</Image.Source>
</Image>
<Popup IsOpen="{Binding ElementName=item,Path=IsMouseOver, Mode=OneWay}" Placement="Center">
<Border BorderBrush="Black" BorderThickness="4">
<Image Width="280" ToolTipService.Placement="Center">
<Image.Source>
<BitmapImage UriSource="{Binding Path=., Mode=OneWay,UpdateSourceTrigger=Explicit}" CreateOptions="DelayCreation" CacheOption="None" />
</Image.Source>
</Image>
</Border>
</Popup>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这似乎同时可见视图内的工作,但如果我向下滚动,它应该加载更多的图像,我得到以下异常: mscorlib.dll 中发生未处理的“System.InvalidOperationException”类型的异常其他信息:集合已被修改;枚举操作可能不会执行。 – NeoID 2014-09-20 08:45:05
@NeoID您刚刚提到的错误与答案无关。好像你可能需要查看'vwp:VirtualizingWrapPanel'的实现。 – pushpraj 2014-09-20 08:52:58
@pushpraj好的,谢谢。我会研究它。 :) – NeoID 2014-09-20 09:00:11