событие щелчка элемента списка? - PullRequest
5 голосов
/ 03 августа 2011

Я связал некоторые элементы с listbox. Когда я нажимаю на определенный элемент списка, я хочу отобразить эти элементы на другой странице.

Скажите, пожалуйста, как это получить.идентификатор всякий раз, когда нажимаете на конкретный элемент списка?

Ответы [ 4 ]

28 голосов
/ 27 ноября 2011

Чтобы уточнить (в случае, если вы не хотите создавать новое приложение DataBound и просто хотите получить ответ), вместо того, чтобы зависеть от события click для элемента списка, вы должны смотреть на событие selectedolatedокно списка само.

например:

<ListBox SelectionChanged="MainListBox_SelectionChanged">


// Handle selection changed on ListBox
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // If selected index is -1 (no selection) do nothing
    if (MainListBox.SelectedIndex == -1)
        return;

    // Navigate to the new page
    NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + MainListBox.SelectedIndex, UriKind.Relative));

    // Reset selected index to -1 (no selection)
    MainListBox.SelectedIndex = -1;
}
3 голосов
/ 03 августа 2011

Посмотрите на код, созданный как часть нового приложения DataBound.Это делает только это.

1 голос
/ 20 июня 2013

Для простой команды, связывающей стиль MVVM с элементом в списке, вы также можете заключить весь шаблон элемента в кнопку и подключить свойство Command кнопки следующим образом:

 <ListBox.ItemContainerStyle>
  <Style TargetType="ListBoxItem">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate>
          <Button Command="{Binding Path=SomeCommandOnItemViewModel, Mode=OneWay}">
            <Button.Template>
              <ControlTemplate>
                <!-- Your listitem styling goes here -->
              </ControlTemplate>
            </Button.Template>
          </Button>

        </ControlTemplate>

      </Setter.Value>
    </Setter>
  </Style>
</ListBox.ItemContainerStyle>
1 голос
/ 30 июня 2012

MVVM-решение

Используйте следующие библиотеки:

xmlns:GalaSoft_MvvmLight_Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP71" 
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" <-- (optional, only for the ContextMenu)

XAML Пример:

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ListBox x:Name="categoryListBox" Margin="0,0,-12,0" ItemsSource="{Binding CategoryItems}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel x:Name="stackPanel" Margin="0,0,0,17" Width="432" Height="78">
                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Tap">
                                <GalaSoft_MvvmLight_Command:EventToCommand 
                                    Command="{Binding Main.OpenCategoryCommand, Source={StaticResource Locator}, Mode=OneWay}" 
                                    CommandParameter="{Binding Mode=OneWay}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>

                        <toolkit:ContextMenuService.ContextMenu>
                            <toolkit:ContextMenu>
                                <toolkit:MenuItem Header="Remove" />
                                <toolkit:MenuItem Header="Show" />
                            </toolkit:ContextMenu>
                        </toolkit:ContextMenuService.ContextMenu>
                        <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                        <TextBlock Text="{Binding Note}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...