स्थिति विंडोज फोन 8 के आधार पर नियंत्रण प्राप्त करें

मैं यह पता लगाने की कोशिश कर रहा हूं कि मैंने किस नियंत्रण को दबाया था, जब मैं विंडोज फोन 8 में स्टैकपैनल के अंदर नियंत्रण दबाता हूं। मैंने Control.GetChildAtPoint विधि को देखने की कोशिश की है, लेकिन मुझे विंडोज फोन 8 के लिए कुछ भी उपयोगी नहीं मिला है, केवल विंडोज फॉर्म के लिए। मैंने कोशिश की:

StackPanel.getChildAtPoint(and so on)
MainPage.getChildAtPoint(and so on)
this.getChildAtPoint(and so on)

लेकिन इन विधियों में से कोई भी कोड ड्रॉपडाउन विंडो में प्रदर्शित नहीं होता है जो आमतौर पर विजुअल स्टूडियो में दिखाई देता है। दबाए जाने पर मुझे स्टैकपैनल के अंदर नियंत्रण कैसे मिल सकता है?

स्टैकपैनल में टेलीरिक नियंत्रण से केवल हबटाइल्स हैं, और जब मैं इसे दबाता हूं तो मैं इसका नाम/शीर्षक ढूंढना चाहता हूं, और मुझे लगता है कि यह करने का यह सबसे अच्छा तरीका है (अगर मैं गलत हूं तो मुझे सही करें)

0
जोड़ा संपादित
विचारों: 1
क्लिक ईवेंट से ऑब्जेक्ट प्रॉपर्टी (आमतौर पर प्रेषक) का उपयोग करें।
जोड़ा लेखक It'sNotALie., स्रोत
अगर मैं sender.tostring() का उपयोग करता हूं तो यह केवल मुझे बताएगा कि किस प्रकार का नियंत्रण मैंने दबाया, मुझे इसकी सामग्री चाहिए। यह एक हबटाइल है - मुझे हबटाइल नाम/शीर्षक की आवश्यकता है। क्या मैं sender.getType() का उपयोग कर सकता हूं?
जोड़ा लेखक Erik, स्रोत
मैंने आपका शीर्षक संपादित किया है। कृपया देखें, " प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए? ", जहां आम सहमति है "नहीं, उन्हें चाहिए नहीं"।
जोड़ा लेखक John Saunders, स्रोत

3 उत्तर

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

private void StackPanel_Tap_1(object sender, GestureEventArgs e)
{
    StackPanel panel = sender as StackPanel;
    foreach( var child in panel.Children)
    {
        if ( child is HubTile)
        {
           //This hubtile is the control inside StackPanel. 
            HubTile hubTile = child as HubTile;
           //Now you can access it properties.
            string name = hubTile.Name;
        }
    }
}
0
जोड़ा
यह स्टैकपैनल में सभी हबटाइल्स का नाम प्राप्त करता है। हालांकि यह काम करता है, अगर इसे केवल एक टैप किए गए हबटाइल का नाम मिल गया था
जोड़ा लेखक Erik, स्रोत

मैं वास्तव में किसी भी गड़बड़ या कोड के बिना, इसके डेटा को आसानी से पुनर्प्राप्त करने में कामयाब रहा। मैंने इसके बजाय एक सूची बॉक्स का उपयोग किया, जहां मैंने हबटाइल्स को जोड़ा, जब उपयोगकर्ता ने उन्हें जोड़ा।

तो मैंने इस कोड का उपयोग हबटाइल्स शीर्षक को पुनः प्राप्त करने के लिए किया - जितना सरल था

    private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //MainListBox was tapped get the name of the HubTile
        var current = mainListBox.SelectedItem as HubTile;
        MessageBox.Show(current.Title);
    }
0
जोड़ा

आपको हबटाइल्स को ListBox/RadDataBoundListBox के आइटम के रूप में रखना चाहिए। इस मामले में एक स्टैकपैनल गलत नियंत्रण है। फिर आप बाध्य डेटा प्राप्त करने के लिए इनमें से चयनChanged/ItemClicked फ़ंक्शन का उपयोग कर सकते हैं।

संपादित करें:


फिर अपनी टाईल्स में आवश्यक डेटा के गुणों के साथ एक वर्ग (मैं इसे MyHubTileItem कहने जा रहा हूं) बनाएं। (MVVM)

आपके पीछे दिए गए कोड में MyHubTileItem सामग्री की एक सूची बनाना चाहिए, इसे अपने डेटा से भरें और इसे अपने डेटा कॉन्टेक्स्ट के रूप में सेट करें। और आपके संसाधनों में (मैं app.xaml का सुझाव देता हूं) हबटाइल को अपने डेटा टेम्पलेट के रूप में परिभाषित करता हूं।

इसके बाद आप चयनित आइटम का शीर्षक प्राप्त करने के लिए, सूची बॉक्स के चयन चेंज किए गए ईवेंट का उपयोग करने में सक्षम होना चाहिए।

MyHubTileItem x = ((ListBox)sender).SelectedItem as MyHubTileItem;
String title = x.Title;

आदर्श:

public sealed class MyHubTileItem
{
    public MyHubTileItem(){}
    public String Title {get; set;}
    public int Count {get; set;}
    public String Message {get; set;}
    ...
}

For the DataTemplate add the following to the section in the app.xaml


    

0
जोड़ा
मैं इसे आजमा सकता हूं, लेकिन सूची बॉक्स विंडोज फोन के लिए वीएस2012 एक्सप्रेस में मेरे टूलबॉक्स में नहीं है। क्या मैं इसे केवल एक्सएएमएल के साथ जोड़ सकता हूं?
जोड़ा लेखक Erik, स्रोत
मुझे लगता है कि मैं समझता हूं कि आपका क्या मतलब है, लेकिन मुझे यकीन नहीं है कि वास्तव में इसे कैसे किया जाए। कक्षा की चीजें
जोड़ा लेखक Erik, स्रोत
MyHubTileItem आइटम क्लास में आप किस प्रकार का कोड डाल देंगे? और आप उन सभी चीजों को app.xaml में कैसे परिभाषित करते हैं? मैं सी # के साथ बहुत प्रोग्रामिंग नहीं कर रहा हूं, इसलिए मैं कुछ चीजों पर थोड़ा स्टार्टर हूं
जोड़ा लेखक Erik, स्रोत
अब तक यह अच्छा है, लेकिन app.xaml कोड को "
जोड़ा लेखक Erik, स्रोत
इसके बाद टेलरिक कहते हैं: राडहबटाइल नहीं मिला था। सत्यापित करें कि आप एक समेकित संदर्भ नहीं खो रहे हैं और सभी संदर्भ असेंबली का निर्माण किया गया है। मैंने xmlns जोड़ा: telerik = "clr-namespace: Telerik.Windows.Controls; assemb और zwnj; ly = Telerik.Windows.C & zwnj; ontrols.Primitiv & zwnj; es" मेरे app.xaml में एप्लिकेशन तत्व के तहत
जोड़ा लेखक Erik, स्रोत
मैंने अपने पोस्ट/उत्तर में कुछ बदलाव किए हैं।
जोड़ा लेखक Malte Goetz, स्रोत
मैंने फिर से अपनी पोस्ट में कुछ बदलाव किए।
जोड़ा लेखक Malte Goetz, स्रोत
बस xmlns जोड़ें: telerik = "clr-namespace: Telerik.Windows.Controls; assemb और zwnj; ly = Telerik.Windows.C और zwnj; ontrols.prrimitives" app.xaml में आपके एप्लिकेशन तत्व में।
जोड़ा लेखक Malte Goetz, स्रोत