2012-11-10 6 views
6

में क्लिक किए गए आइटम को कैसे प्राप्त करें यह एक छोटा सा कार्य होना चाहिए लेकिन मुझे यह नहीं पता कि यह कैसे किया जाए। मैं एक सूची में किसी आइटम पर एक क्लिक को सुनना चाहता हूं, संबंधित मॉडल ऑब्जेक्ट प्राप्त करें, और एक नई स्क्रीन लॉन्च करें। ,ListView

this.Frame.Navigate(typeof(SecondScreen)); 

यह काम करता है:

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}" 
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}" 
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick" Tapped="MyTap"/> 

और MyClick, MyTap:

private void MyClick(object sender, ItemClickEventArgs e) 
{ 
    Debug.WriteLine("Click!"); 
} 

private void MyTap(object sender, TappedRoutedEventArgs e) 
{ 
    Debug.WriteLine("TAp!!" + sender.ToString() + "--" + e.ToString()); 
} 

नई स्क्रीन पर नेविगेट करने के लिए विधि

इस ListView के लिए XAML है लेकिन मुझे क्लिक किए गए आइटम के मॉडल ऑब्जेक्ट की आवश्यकता है और इसे दूसरी स्क्रीन पर पैरामीटर के रूप में पास करें।

लेकिन MyClick को कभी भी नहीं कहा जाता है, और MyTap मुझे क्लिक किए गए आइटम के बारे में कोई जानकारी नहीं देता है। "प्रेषक" ListView है।

मैं इन exaples डाउनलोड किया गया:

http://code.msdn.microsoft.com/windowsapps/XAML-ListView-sample-pack-0ec6b60f

लेकिन यह शामिल नहीं है कि मैं क्या जरूरत है, वहाँ एक मास्टर/विवरण दृश्य है, लेकिन यह बाइंडिंग के साथ काम करता है और मुझे क्या करना चाहते हैं एक पूरा का शुभारंभ है नई स्क्रीन

नोट: मैं विंडोज़ विकास में एक नोब हूं और एंड्रॉइड या आईओएस में ऐसा करने के सामान्य तरीके से उन्मुख हूं जहां आप क्लिक किए गए तत्व की स्थिति के साथ कॉलबैक लागू करते हैं। सही तरीके के बारे में कोई जानकारी नहीं Windows 8 में यह करने के लिए

उत्तर

27

आप SelectionChanged घटना का उपयोग कर सकते हैं:

<ListView x:Name="ItemListView" SelectionChanged="MySelectionChanged" /> 

और तुम SelectionChangedEventArgs जैसे से चयनित/deseleted आइटम प्राप्त कर सकते हैं:

private void MySelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Debug.WriteLine("Selected: {0}", e.AddedItems[0]); 
} 

या आप का उपयोग करने के ItemClick="MyClick" आप IsItemClickEnabledtrue को निर्धारित करने की आवश्यकता चयन कार्यक्षमता और क्या जरूरत नहीं है यदि:

एक मान प्राप्त करता है या सेट करता है जो इंगित करता है कि दृश्य में आइटम बातचीत के जवाब में आइटमक्लिक ईवेंट बढ़ाते हैं या नहीं।

<ListView x:Name="ItemListView" 
    ItemTemplate="{StaticResource StoreFrontTileTemplate}" 
    ItemContainerStyle="{StaticResource StoreFrontLVTileStyle}" 
    Margin="0" VerticalAlignment="Top" ItemClick="MyClick" 
    IsItemClickEnabled="bool" SelectionMode="None"/> 

नोट इस मामले में आप भी SelectionModeNone को निर्धारित करने की आवश्यकता है।

+0

धन्यवाद! चयन कार्यों के साथ ही क्लिक करें। – Ixx

+2

क्लिक किए गए आइटम की अनुक्रमणिका कैसे प्राप्त करें? –

+0

@AmoghTalpallikar ItemClickEventArgs पर क्लिक किए गए आइटम – hendrix

1

आप डबलटाइप एक्सएएमएल कोड पर सूचीदृश्य की घटना का उपयोग कर सकते हैं। और फिर, सी # कोड में आप द्वारा स्थिति प्राप्त कर सकते हैं:

private void display_DoubleTapped_1(object sender, 
    Windows.UI.Xaml.Input.DoubleTappedRoutedEventArgs e) 
{ 
    int items = display.SelectedIndex; 
    // use this index to do something 
} 
1

मैं इस का उपयोग करें:

private void ListUI_Tapped(object sender, TappedRoutedEventArgs e) 
    { 
     if(ListUI.SelectedItems.Count != 0) 
     { 
      Debug.WriteLine("It's not a trap at all my friend"); 
     } 
     else 
     { 
      Debug.WriteLine("Its a trap"); 
     } 
    } 
0
 // We have a class name 'Message' in ControllerLibrary Namespace 

     namespace ControllerLibrary 
      { 
       public class Message 
       { 
        public string MessageID { get; set; } 
        public string MessageName { get; set; } 
       } 
      } 

    // Add name space at page heading 
       xmlns:local1="using:ControllerLibrary" 

     //At Gridview 

     <GridView IsItemClickEnabled="True" Name="UserMessageList"> 
     <GridView.ItemTemplate> 
      <DataTemplate x:DataType="local1:Message">           <StackPanel Orientation="Horizontal"> 
     <Button Content="{x:Bind MessageName}" HorizontalAlignment="Left" Margin="2 0 10 0" Click="btnUserMessage_Click"> 
     </Button> 
     </StackPanel> 
     </DataTemplate> 
     </GridView.ItemTemplate> 
     </GridView> 

    //At code Behind 
    private void btnAddPage_Click(object sender, RoutedEventArgs e) 
     { 
      //Get selecte message 
      var selectedMessage = (sender as Button).DataContext as Message; 
     }