如何在触发项目控件的事件时访问listboxitem模板数据?

时间:2013-02-22 14:27:19

标签: windows-phone-7 windows-phone-7.1 windows-phone-8

当从以下层次结构中单击按钮时,我想访问每个listboxitem模板控件(图像和4个文本块控件)数据。

 <ListBox x:Name="lstBoxNearbyPlaces" ItemsSource="{Binding Items}" Grid.Row="2" Margin="0,10,0,0"  >
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Button Width="400" Height="150" Name="btnPlace" Click="btnPlace_Click_1">
                                    <Button.Content>                                            
                                        <StackPanel Orientation="Horizontal" >                                              
                                            <Image  Name="ImgPlace"  Source="{Binding PlaceIconURL}" Width="50" />
                                            <TextBlock Name="lblPlaceLat" Text="{Binding PlaceLatLocation}" Visibility="Collapsed"/>
                                            <TextBlock Name="lblPlaceLng" Text="{Binding PlaceLongLocation}" Visibility="Collapsed"/>
                                            <StackPanel Width="350" >                                                    
                                                <TextBlock FontSize="20"   Text="{Binding PlaceName}" Name="txtAddress" TextWrapping="Wrap" ></TextBlock>                                        
                                                <TextBlock FontSize="20" Text="{Binding PlaceVicinity}" Name="txtLocation" TextWrapping="Wrap"></TextBlock>
                                            <Line MinHeight="5"></Line>
                                            </StackPanel>
                                        </StackPanel>
                                    </Button.Content>
                                </Button>
                            </DataTemplate>

                        </ListBox.ItemTemplate>
                    </ListBox>

触发按钮点击事件时,是否可以获取或读取每个控件的数据?

1 个答案:

答案 0 :(得分:1)

您可以将ListBox_SelectionChanged中的绑定对象作为所选项目。

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
      ItemModel model= listBox.SelectedItem as ItemModel ;
    }

或者在Buttonclick事件中,您可以将其作为

 private void Button_Click(object sender, RoutedEventArgs e)
    {
        Button button = sender as Button;
        ItemModel model = button.DataContext as ItemModel;
    }

此处模型是您绑定到该模板的对象。