2015-11-23 27 views
0

我有一個列表視圖,每列都有一個關聯的id_Number。如果用戶點擊其中一行,是否可以重定向到另一個頁面?例如,如果id_Number是4,則應將頁面重定向到achive.xaml。重定向到列表視圖行上的頁面單擊

的MainPage

<SplitView Name="MySplitView" 
       Grid.Row="1" 
       DisplayMode="CompactOverlay" 
       OpenPaneLength="150" 
       CompactPaneLength="45" > 
     <SplitView.Pane> 
      <ListBox SelectionMode="Single" 
        SelectionChanged="ListBox_SelectionChanged"> 
       <ListBoxItem Name="Home"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock 
          Text="&#xE80F;" 
          FontFamily="Segoe MDL2 Assets" 
          FontSize="20" /> 
         <TextBlock Text="Home" 
            FontSize="18" 
            Margin="20,0,0,0" /> 
        </StackPanel> 
       </ListBoxItem> 
       <ListBoxItem Name="About"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock 
          Text="&#xE1CE;" 
          FontFamily="Segoe MDL2 Assets" 
          FontSize="20" /> 
         <TextBlock Text="About" 
            FontSize="18" 
            Margin="20,0,0,0" /> 
        </StackPanel> 
       </ListBoxItem> 
      </ListBox> 
     </SplitView.Pane> 
     <SplitView.Content> 
      <GridView Name="SkinItemGrid" 
         Background="LightGray" 
         ItemsSource="{x:Bind SkinItems}" 
         HorizontalAlignment="Stretch" 
         IsItemClickEnabled="True" 
         Margin="10,0,0,0"> 
       <GridView.ItemTemplate> 
        <DataTemplate x:DataType="data:SkinItem"> 
         <local:SkinItemControl /> 
        </DataTemplate> 
       </GridView.ItemTemplate> 
      </GridView> 
     </SplitView.Content> 
    </SplitView> 

MainPage.cs

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (Home.IsSelected) 
     { 
      SkinsManager.GetSkins("Home", SkinItems); 
      TitleTextBlock.Text = "Home"; 
     } 
     else if (About.IsSelected) 
     { 
      SkinsManager.GetSkins("About", SkinItems); 
      TitleTextBlock.Text = "About"; 
     } 
    } 

外觀類

public class SkinItem 
{ 
    public int Id { get; set; } 
    public string Category { get; set; } 
    public string Headline { get; set; } 
    public string Subhead { get; set; } 
    public string DateLine { get; set; } 
    public string Image { get; set; } 
} 

public class SkinsManager 
{ 
    public static void GetSkins(string category, ObservableCollection<SkinItem> skinItems) 
    { 
     var allItems = getSkinItems(); 

     var filteredNewsItems = allItems.Where(p => p.Category == category).ToList(); 

     skinItems.Clear(); 

     filteredNewsItems.ForEach(p => skinItems.Add(p)); 
    } 

    private static List<SkinItem> getSkinItems() 
    { 
     var items = new List<SkinItem>(); 

     items.Add(new SkinItem() { Id = 1, Category = "Home", Headline = "Diagnosis", Subhead = "", DateLine = "", Image = "Assets/Diagnosis.jpg" }); 
     items.Add(new SkinItem() { Id = 2, Category = "Home", Headline = "Archive", Subhead = "", DateLine = "", Image = "Assets/Archive.png" }); 

     items.Add(new SkinItem() { Id = 3, Category = "About", Headline = "VKSE", Subhead = "", DateLine = "", Image = "Assets/About.jpg" }); 

     return items; 
    } 

} 

}

+0

你可能會使用類似這裏發佈的東西,並使用'e.RoutedEventsArgs'基於切換案例來執行重定向http://stackoverflow.com/questions/1271375/how-to-capture-a-mouse-點擊(功能(){ var id = $(this).attribute(「2」); if(點擊一個項目中的列表框中的項目) – MethodMan

回答

0

這可能是最好的JavaScript/jQuery的做用。點擊( )偵聽器並添加

$(".YourClass").click(function() { 
    var id = $(this).attribute("RowID"); 
    if (id == 4) {window.open("address.html");} 
}); 
+0

$(「。SkinItem」) (id == 4){window.open(「Archive.xaml」);} }); – user3807187

+0

它不起作用 – user3807187

0

一個類中的所有行的嘗試

 $(document).on('click','.SkinItem',function() { var id = $(this).attribute("2"); if (id == 4) { window.open("Archive.xaml"); } }); 

有時我呼籲在列表視圖對象點擊事件,而這樣做的問題。

+0

沒有。不起作用。我只是創建一個JavaScript文件,也許我需要引用它或不喜歡jQuery的?這是我第一次嘗試這個。 – user3807187

+1

您可以引用.js文件或將其包含在頁面上的腳本塊中 – Falanor