我有一个列表框,其中填充了来自隔离存储的图像。允许用户选择图像以对其执行某些操作。为了通知用户列表中当前选择的图像,我只是在所选项目周围放置了一个边框。但是,当在列表中选择新图像时,边框也会放置在该图像周围,因此现在两个图像都有边框。我想找到一种方法来删除先前选择的图像的边框,以便仅突出显示当前选择的图像。
到目前为止,我所拥有的如下:
主页.xaml
<ListBox x:Name="Recent" ItemsSource="{Binding Pictures}" Margin="8"
SelectionChanged="recent_SelectionChanged" toolkit:TiltEffect.IsTiltEnabled="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Image x:Name="recentImage" Source="{Binding Source}" Margin="12" Width="115"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
MainPage.xaml.cs
private void recent_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//Place border round currently selected image
var lb = sender as ListBox;
var lbi = lb.ItemContainerGenerator.ContainerFromItem(lb.SelectedItem) as ListBoxItem;
lbi.BorderThickness = new Thickness(2, 2, 2, 2);
lbi.BorderBrush = new SolidColorBrush((Color)Application.Current.Resources["PhoneAccentColor"]);
//Where and how to remove border from previously selected image?
}
所以,我不确定要做什么才能做到这一点。如何在 ListBox 中检测先前选择的图像项,或者确定哪个项具有边框并在将边框添加到当前选定项之前将其删除?有什么想法或参考吗?