如何在LongListSelector中突出显示所选项

时间:2013-08-20 02:04:29

标签: c# xaml windows-phone-7 windows-phone-8 longlistselector

我想在LongListSelector中显示当前所选项目周围的边框。我为我的LongListSelector设置了一个ItemTemplate,但我不确定如何修改Border以便只有当前选中的项包含边框。

MainPage.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;
    }

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

参考此链接,

在WP8上的LongListSelector中突出显示所选项目 http://code.msdn.microsoft.com/wpapps/Highlight-a-selected-item-30ced444

答案 1 :(得分:-1)

当您访问所选项目时,您应该以{{1​​}}而不是border的身份访问它,因为这是您展示每个项目的方式,而LongListSelector是容器。你还忘了第3排的分号,我已经为你添加了它。

您的新代码将是:

LongListSelector