2016-04-06 4 views
3

Wie Sie wissen ElementCompositionPreview.GetElementVisual ist zugänglich über 10 Windows-10586 bauen, würde Ich mag eine Anwendung, die sowohl beim Aufbau 10586 ausrichten kann und bauen 10240.Zielcode für eine bestimmte Version von Windows 10, wie 10586 Bauen

Hat jemand eine Idee, wie ich Compositor und ElementCompositionPreview.GetElementVisual nutzen könnte, wenn die Anwendung auf Build-10586 und etwas anderes ausgeführt wird, wenn es die Build 10240

So etwas läuft:

#if WINDOWS_UWP Build 10586 
     _compositor = new Compositor(); 
     _root = ElementCompositionPreview.GetElementVisual(myElement); 
    #endif 


#if WINDOWS_UWP Build 10240 
    //other code 
#endif 

Irgendeine Idee?

Antwort

3

Wie Sie wissen ElementCompositionPreview.GetElementVisual zugänglich unter Windows 10 10586 bauen, würde Ich mag an eine Anwendung, die sowohl 10586 Build-Ziel und Bauen 10240

für UWP App, gibt es nur eine Zielversion, für Ihre Anforderung, können wir Zielversion gesetzt 10586 und die Min-Version Build: Bauen 10240 enter image description here

Hat jemand eine Idee, wie ich Compositor und ElementCompositionPreview.GetElementVisual nutzen könnten, wenn die Anwendung auf Build-10586 und etwas anderes ausgeführt wird, wenn es den Build 10240.

läuft Bitte verwenden Windows.Foundation.Metadata.ApiInformation API dynamisch Merkmale zu erkennen:

if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Hosting.ElementCompositionPreview")) 
{ 
       if (Windows.Foundation.Metadata.ApiInformation.IsMethodPresent("Windows.UI.Xaml.Hosting.ElementCompositionPreview", "GetElementVisual")) 
       { 
        _compositor = new Windows.UI.Composition.Compositor(); 
        _root = Windows.UI.Xaml.Hosting.ElementCompositionPreview.GetElementVisual(btn1); 
       } 
       else 
       { 
        //Do other things 
       } 
} 

Hier ist ein guter Artikel ist diese API vorstellen: Dynamically detecting features with API contracts (10 by 10)

0

Ich glaube, Sie System.Reflection verwenden können die OS-Version von Ihrer App zum Beispiel wie folgt zu erhalten:

var analyticsInfoType = Type.GetType("Windows.System.Profile.AnalyticsInfo, Windows, ContentType=WindowsRuntime"); 
var versionInfoType = Type.GetType("Windows.System.Profile.AnalyticsVersionInfo, Windows, ContentType=WindowsRuntime"); 

if (analyticsInfoType == null || versionInfoType == null) 
{ 
    //not on Windows 10 
    return; 
} 

var versionInfoProperty = analyticsInfoType.GetRuntimeProperty("VersionInfo"); 

object versionInfo = versionInfoProperty.GetValue(null); 
var versionProperty = versionInfoType.GetRuntimeProperty("DeviceFamilyVersion"); 
object familyVersion = versionProperty.GetValue(versionInfo); 
long versionBytes; 
if (!long.TryParse(familyVersion.ToString(), out versionBytes)) 
{ 
    //can't parse version number 
    return; 
} 

Version DeviceVersion = new Version((ushort)(versionBytes >> 48), 
    (ushort)(versionBytes >> 32), 
    (ushort)(versionBytes >> 16), 
    (ushort)(versionBytes)); 

if ((ushort)(versionBytes >> 16) == 10586) 
{ 
    _compositor = new Compositor(); 
    _root = ElementCompositionPreview.GetElementVisual(myElement); 
} 
else 
{ 
    //other code 
}