Показать элементы списка один за другим (Windows Phone)

У меня есть ListBox, выставка Buttonи TextBlock в моем приложении Windows Phone.

Всякий раз, когда пользователь нажимает на Показать Buttonпредмет из ListBox должно быть показано в TextBlock, Если пользователь нажимает на Показать Button снова, следующий пункт должен быть показан.

XAML

<ListBox x:Name="FavoriteListBox"  
         SelectionChanged="FavoriteListBox_SelectionChanged"                         
         ItemContainerStyle="{StaticResource CustomListBoxItemStyle}"
         Height="300" Width="250">
    <ListBox.ItemTemplate>
         <DataTemplate>
             <TextBlock x:Name="FavoriteListBoxTextBlock" 
                        FontSize="40" FontWeight="SemiBold"
                        Text="{Binding AnswerName}"/>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

<TextBlock x:Name="DisplayTextBlock"/>

<Button x:Name="ShowButton" Click="ShowButton_Click"/>

C#

private void ShowButton_Click(object sender, EventArgs e)
{
    if(FavoriteListBox != null)
     {
          // ??????
     }
}

Как можно добиться такой функциональности?

1 ответ

Решение

Это может быть довольно легко, используя индексы напрямую.

Предположим, список, который вы используете для ListBox предметы называется listobjтогда вы можете использовать следующее:

private int _displayedFavoriteIndex = -1;

private void ShowButton_Click(object sender, EventArgs e)
{
    //move to the next item
    _displayedFavoriteIndex++;    
    if ( _displayedFavoriteIndex >= listobj.Count )
    {
        //we have reached the end of the list
        _displayedFavoriteIndex = 0;
    }
    //show the item
    DisplayTextBlock.Text = listobj[ _displayedFavoriteIndex ].AnswerName;
}

Обратите внимание, вам не нужно проверять, FavoriteListBox является null, потому что такая ситуация никогда не произойдет - все элементы управления инициализируются с InitializeComponent позвонить в конструктор.

Другие вопросы по тегам