我想简单地在 LongListSelector 中当前选定的项目周围显示边框。我已经为 LongListSelector 设置了 ItemTemplate,但我不确定如何修改边框,以便只有当前选定的项目包含边框。
主页.xaml
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="ItemTemplate">
<!-- BorderBrush of all items are currently set to PhoneAccentBrush, need only currently selected item! -->
<Border x:Name="brd" CornerRadius="10" BorderBrush="{StaticResource PhoneAccentBrush}" Width="Auto" BorderThickness="3">
<Viewbox Width="108" Height="108">
<Image x:Name="recentImage" Source="{Binding Source}" Margin="6,6" Width="108"/>
</Viewbox>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu x:Name="imgListContextMenu" Background="{StaticResource PhoneChromeBrush}">
<toolkit:MenuItem Foreground="{StaticResource PhoneForegroundBrush}" Header="delete" Click="deleteContextMenuItem_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Border>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
...
<phone:LongListSelector x:Name="Recent" Margin="0"
SelectionChanged="recent_SelectionChanged"
toolkit:TiltEffect.IsTiltEnabled="True"
LayoutMode="Grid" GridCellSize="108,108"
ItemTemplate="{StaticResource ItemTemplate}"
/>
目前内的所有项目LongListSelector
显示边界。我更愿意在后面的代码中修改它,但到目前为止我所拥有的不起作用
MainPage.xaml.cs
private void recent_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = sender as LongListSelector
item.BorderBrush = App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush;
}
有任何想法吗?
当您访问所选项目时,您应该将其作为border
而不是作为LongListSelector
因为这就是您显示每个项目的方式,而LongListSelector
是容器。您还忘记了第三行的分号,我已经为您添加了。
您的新代码将是:
private void recent_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var item = sender as Border;
item.BorderBrush = App.Current
.Resources["PhoneAccentBrush"] as SolidColorBrush;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)