2015-05-27 73 views
2

大家好,我在Windows Phone应用程序的工作,我奋力访问内部列表元素时用户会点击在列表框中的特定项目我得到的输出喜欢这个使用linq查找列表中的值?

enter image description here

例如:假设用户将点击[0]索引项目i想要得到[0] 1,1 480,[2] 749,[3] 270,并且当用户将点击1索引项目i希望得到这样的[0] 1值,1 810, [2] 1080,[3] 271

UI

<phone:LongListSelector Name="list_professions" 
         LayoutMode="List" 
         Tap="list_professions_Tap" 
         Padding="5,15,5,15" 
         IsGroupingEnabled="True"> 
    </phone:LongListSelector> 

的Json类和我在这里面临的问题访问分组项目如何访问分组项目时用户会点击一个项目上的列表框

void onResponse(object sender, DownloadStringCompletedEventArgs e) 
    { 
     try 
     { 
      onLoadingStope(sender, e); 
      var rootObject = JsonConvert.DeserializeObject<RootObject>(e.Result); 

      string flag = rootObject.flag; 
      string msg = rootObject.message; 
      if (flag.Equals("1")) 
      { 

       foreach (var temp in rootObject.result.Professions[0]) 
       { 

        profess.Add(new Result() { Professions = rootObject.result.Professions }); 
        var flattenProfessions = rootObject.result.Professions.SelectMany(x => x).ToList(); 
        list_professions.ItemsSource = rootObject.result.Professions; 

       } 
      } 
      else 
      { 
       Console.WriteLine("Error message - " + msg); 
       MessageBox.Show("Oops! response : " + msg); 
      } 
     } 
     catch(Exception ex) 
     { 

     } 


    } 

和列表抽头可变

private class RootObject 
    { 
     public string flag { get; set; } 
     public string message { get; set; } 
     public Result result { get; set; } 
    } 
    private class Result 
    { 
     public List<List<string>> Professions { get; set; } 
    } 

显示数据

private void list_professions_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 


    } 
+6

你尝试过什么?除非你证明你自己已经做出了一些努力来解决这个问题,否则你不会在这里得到很好的答案。 –

+0

您好Peter Lillevold先生我想根据外部列表索引 – user

+1

访问内部列表项目。问题是:显示您的尝试;什么不工作。 –

回答

0

您不应该使用LongListSelector的Tap事件,而应该使用use a DataTemplate和其中。事情是这样的:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="TileDataTemplate"> 
     <Grid Background="{StaticResource TransparentBrush}" 
       Margin="0, 0, 0, 12" Height="60"> 
      <TextBlock Text="{Binding Name}" Margin="60, 10, 0, 0" FontSize="24" Height="60"> 
      </TextBlock> 
      <Image x:Name="GetName" Tap="GetName_Tap" Grid.Column="0" Source="/Assets/AppBar/Delete.png" Height="40" Width="40" 
          Margin="0, 6, 0, 5" HorizontalAlignment="Right" VerticalAlignment="Top" /> 
     </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

注意TapImage

<phone:LongListSelector 
        SelectionChanged="MainLongListSelector_SelectionChanged" 
        Margin="10,6,0,0" 
        ItemsSource="{Binding Staff.Items}" 
        LayoutMode="Grid" 
        GridCellSize="400,80" 
        ItemTemplate="{StaticResource TileDataTemplate}" 
        /> 

这里是如何得到事件的DataContext

private void GetName_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    var element = (FrameworkElement)sender; 
    StaffData data = (StaffData)element.DataContext; 
    MessageBox.Show(data.Name); 
}