Как добавить элемент списка элементов в ListBox

В настоящее время я работаю над Windows Phone 8 Application, у меня есть ListBox с TextBlock с рамкой в ​​качестве фона для него, когда я нажимаю на элемент в списке, у пользователя нет указаний на то, что он выбрал этот элемент, как добавить к нему выделенный цвет элемента?

А также мне нужно выбрать несколько элементов в ListBox, который когда-либо выбирается, его цвет фона должен быть изменен.

Ниже мой код:

<Grid x:Name="ListBoxLayout" Grid.Row="2" Margin="4,0,0,0">
    <ListBox Name="listBox" 
             HorizontalContentAlignment="Stretch" 
             VerticalContentAlignment="Stretch" 
             SelectionChanged="TopicListboxSelectionChanged"
             ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Name="AnswerCellBack" Tap="AnswerCellBack_Tap" Margin="0,0,0,4" Orientation="Horizontal">
                    <Border Name="borderColor" Background="#FFF2F4F7">
                        <TextBlock Name="text"
                               Width="456"
                               Padding="10,20,10,20"
                               TextAlignment="Center"
                               Text="{Binding Path=Value}"
                               Style="{StaticResource AnswerTextStyle}"/>
                    </Border>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>              
</Grid>

Ответ 1

Вам нужно использовать свойство SelectionMode, чтобы включить множественный выбор в списке. Или вы можете использовать LongListMultiSelector из набора инструментов Windows Phone.

Чтобы изменить цвет фона для выбранного элемента, измените шаблон стиля списка, как указано здесь, http://msdn.microsoft.com/en-us/library/cc278062%28v=vs.95%29.aspx.

Найдите эту строку в стиле ListBoxItem и измените ее на свой цвет

<Rectangle x:Name="fillColor2" Opacity="0" Fill="#FFBADDE9" IsHitTestVisible="False" RadiusX="1" RadiusY="1"/>

Вы можете объявлять стили в App.xaml в теге Application.Resources.

Или как эти два способа на вашей странице.

Первый способ.

<ListBox Name="lstbx">
<ListBox.Style>
    // Your Style
</ListBox.Style>
</ListBox>

Второй способ.

Объявите стили под тегом phone: PhoneApplicationPage.Resources, например.

<phone:PhoneApplicationPage
x:Class="Test.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="False">

<phone:PhoneApplicationPage.Resources>
    <Style x:Key="MyListStyle"  TargetType="ListBoxItem">
        //your style
    </Style>
</phone:PhoneApplicationPage.Resources>

<ListBox Name="list1" Style="{StaticResource MyListStyle}"
//....