Показать элементы списка один за другим (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
позвонить в конструктор.