2013-10-25 5 views
9

मैंने विंडोज़ 8.0 से विंडोज़ 8.1 में अपनी परियोजना को अपग्रेड कर दिया है और अप्रचलित कोड की कुछ चेतावनियां प्राप्त की हैं। उनमें से कुछ मैंने तय कर दिया है, और उनमें से कुछ नहीं।विंडोज 8.1 इस अप्रचलित कोड को कैसे ठीक करें?

यहां अंतिम चेतावनियों की एक छवि है जिसे मैं ठीक नहीं कर सका और कोई जानकारी नहीं मिली।

enter image description here

सभी चेतावनियों एक ही विधि को संदर्भित करता है, और यह कहना है कि यह अप्रचलित है, मुझे नहीं अप्रचलित कोड प्राप्त करने के क्या करना चाहिए?

  1. चेतावनी संख्या 2.

    /// <summary> 
    /// Translates <see cref="ApplicationViewState" /> values into strings for visual state 
    /// management within the page. The default implementation uses the names of enum values. 
    /// Subclasses may override this method to control the mapping scheme used. 
    /// </summary> 
    /// <param name="viewState">View state for which a visual state is desired.</param> 
    /// <returns>Visual state name used to drive the 
    /// <see cref="VisualStateManager" /></returns> 
    /// <seealso cref="InvalidateVisualState" /> 
    protected virtual string DetermineVisualState(ApplicationViewState viewState) 
    { 
        return viewState.ToString(); 
    } 
    
  2. चेतावनी संख्या 1.

    // Set the initial visual state of the control 
    VisualStateManager.GoToState(control, DetermineVisualState(ApplicationView.Value), false); 
    
  3. चेतावनी संख्या 3.

    :

    यहाँ कोड है

सभी उपरोक्त कोड, DetermineVisualState विधि को अस्वीकार कर दिया गया है, यह सीधे विंडो लेआउट आकार के लिए क्वेरी करने की पेशकश करता है, लेकिन इसका क्या अर्थ है?

नोट: यह लेआउटअवेयर पेज है, इसलिए मैंने यहां कोई कोड नहीं लिखा है, यह विंडोज 8.0 कार्यान्वयन है।

किसी भी मदद की सराहना की जाएगी और अग्रिम धन्यवाद!

+0

क्या आपने [यह विंडोज 8.1 उदाहरण] देखा है (http://code.msdn.microsoft.com/windowsapps/Controlling-the-VisualState-d169aeb8)? कोई मदद? –

+0

हां, यह पहला उदाहरण है जिसे मैंने देखा, कोई मदद नहीं क्योंकि यह लेआउटएवेयर पेज –

+1

का उपयोग नहीं करता है यह सही है - जैसा कि यह कहता है * "विंडोज 8.1 पूर्वावलोकन के साथ लेआउटअवेयर पेज को डिफ़ॉल्ट विंडोज स्टोर ऐप टेम्पलेट्स से हटा दिया गया है" * - इसलिए लेख एक देता है संभव विकल्प क्या यह आपके लिए संभव नहीं है? –

उत्तर

8

MSDN से: How to stop using the LayoutAwarePage

Windows 8 में, माइक्रोसॉफ्ट विजुअल स्टूडियो टेम्पलेट्स LayoutAwarePage वर्ग ApplicationViewState के आधार पर दृश्य राज्यों के प्रबंधन के लिए उत्पन्न करते हैं। विंडोज 8.1 में, एप्लिकेशन व्यूस्टेट बहिष्कृत है और लेआउटअवेयर पेज अब विजुअल विंडोज स्टोर ऐप्स के लिए स्टूडियो टेम्पलेट्स में शामिल नहीं है। लेआउटअवेयर पेज का उपयोग जारी रखने के लिए अपना ऐप तोड़ सकता है। इसे ठीक करने के लिए, पर अपने दृश्य को फिर से लिखें, न्यूनतम न्यूनतम दृश्य स्थिति को समायोजित करें, और विंडो आकार के आधार पर ईवेंट बनाएं। यदि आप अपने ऐप को विभिन्न आकारों में अपडेट करते हैं, तो आपको विंडो को संभालना होगा। वर्तमान और विंडो। आकार बदलें, अपने ऐप के UI को नए आकार में अनुकूलित करने के लिए। हम अनुशंसा करते हैं कि आप लेआउटएवेयर पेज का उपयोग करना बंद करें, और कक्षाओं से सीधे कक्षाओं का उत्तराधिकारी प्राप्त करें। यहाँ कैसे LayoutAwarePage का उपयोग बंद करने के लिए:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    this.Loaded += PageLoaded; 
    this.Unloaded += PageUnloaded; 
} 

private void PageUnloaded(object sender, RoutedEventArgs e) 
{ 
    Window.Current.SizeChanged -= Window_SizeChanged; 
} 

private void PageLoaded(object sender, RoutedEventArgs e) 
{ 
    Window.Current.SizeChanged += Window_SizeChanged; 
} 

private void Window_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e) 
{ 
    if (e.Size.Width <= 500) 
    { 
    //VisualStateManager.GoToState(this, state.State, transitions); 
    } 
    else if (e.Size.Height > e.Size.Width) 
    { 
    //VisualStateManager.GoToState(this, state.State, transitions); 
    } 
    else 
    { 
    //VisualStateManager.GoToState(this, state.State, transitions); 
    } 
} 

Search for Retargeting to Windows 8.1 Preview in this link

ओपन LayoutAwarePage और अब को DetermineVisualState पद्धति को बदलने ApplicationViewState पर भरोसा करते हैं और बदले में विंडो का आकार पर निर्भर होना।उदाहरण के लिए, आप वर्टिकललायआउट वापस कर सकते हैं जब आपकी ऐप विंडो की चौड़ाई 500px से कम है और पर क्षैतिज लेआउट 500px से अधिक है। चूंकि यह विधि वर्चुअल है, इसलिए इसे पर डिज़ाइन किया गया है जब आवश्यक हो प्रत्येक पृष्ठ में ओवरराइड किया जाए (जैसा कि यह स्प्लिटपेज पर किया गया है)। यदि आप अपने लेआउट और दृश्य राज्य अलग-अलग हैं तो आप इसे किसी भी पृष्ठ पर ओवरराइड कर सकते हैं। इन नए तारों से मेल खाने के लिए बस अपने प्रत्येक पृष्ठ को पर दृश्य राज्यों का नाम बदलना सुनिश्चित करें।

+0

समस्या यह है कि यदि लिंक कभी मर जाता है (जो होता है) तो जवाब बेकार है। यहां लिंक का सारांश शामिल करना बेहतर है, इसलिए किसी अन्य साइट पर जाना जरूरी नहीं है। बीटीडब्ल्यू डाउनवोट मेरा नहीं है, यह संभवतः [इस मेटा पोस्ट] पर चर्चा से आया है (http://meta.stackexchange.com/questions/202974/when-is-it-wrong-to-flag-a-link -ऑनली-उत्तर) – Taryn

+2

हालांकि कोई समस्या नहीं, सारांश शामिल करने के लिए मुझे सुझाव देने के लिए धन्यवाद :) – Xyroid

+1

उस एमएसडीएन आलेख के साथ समस्या यह है कि "हम अनुशंसा करते हैं कि आप लेआउटएवेयर पेज क्लास का उपयोग करना बंद करें, और कक्षाओं से सीधे कक्षाओं का उत्तराधिकारी प्राप्त करें । " यह विचार करने के लिए उपेक्षा करता है कि नेविगेशन, एनवी राज्य और डिफ़ॉल्ट दृश्य मॉडल के लिए लेआउटएवेयरपेज में अन्य टेम्पलेट कोड का एक टन है। –

संबंधित मुद्दे