From: Gustavo Martin Date: Wed, 1 Jan 2014 23:17:38 +0000 (+0100) Subject: C# Windows Phone: My first Application X-Git-Url: https://git.gumartinm.name/?a=commitdiff_plain;h=2195a314ce879a03b993199ff94e9d205b2ecd2e;p=CSharpForFun%2F.git C# Windows Phone: My first Application --- diff --git a/CSharpInDepth/Chapter10/Chapter10.v12.suo b/CSharpInDepth/Chapter10/Chapter10.v12.suo index 668b7e7..75dcb6f 100644 Binary files a/CSharpInDepth/Chapter10/Chapter10.v12.suo and b/CSharpInDepth/Chapter10/Chapter10.v12.suo differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp.sln b/WindowsPhone/MyFirstApp/MyFirstApp.sln new file mode 100644 index 0000000..758af47 --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp.sln @@ -0,0 +1,40 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyFirstApp", "MyFirstApp\MyFirstApp.csproj", "{F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.ActiveCfg = Debug|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Build.0 = Debug|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|ARM.Deploy.0 = Debug|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.ActiveCfg = Debug|x86 + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Build.0 = Debug|x86 + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Debug|x86.Deploy.0 = Debug|x86 + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Build.0 = Release|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|Any CPU.Deploy.0 = Release|Any CPU + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.ActiveCfg = Release|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Build.0 = Release|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|ARM.Deploy.0 = Release|ARM + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.ActiveCfg = Release|x86 + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Build.0 = Release|x86 + {F14CB6C1-C8A1-4527-92CC-4F30748BAFEA}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WindowsPhone/MyFirstApp/MyFirstApp.v12.suo b/WindowsPhone/MyFirstApp/MyFirstApp.v12.suo new file mode 100644 index 0000000..30af482 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp.v12.suo differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml new file mode 100644 index 0000000..6bf39dd --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs new file mode 100644 index 0000000..d90d8b3 --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/App.xaml.cs @@ -0,0 +1,223 @@ +using System; +using System.Diagnostics; +using System.Resources; +using System.Windows; +using System.Windows.Markup; +using System.Windows.Navigation; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using MyFirstApp.Resources; + +namespace MyFirstApp +{ + public partial class App : Application + { + /// + /// Provides easy access to the root frame of the Phone Application. + /// + /// The root frame of the Phone Application. + public static PhoneApplicationFrame RootFrame { get; private set; } + + /// + /// Constructor for the Application object. + /// + public App() + { + // Global handler for uncaught exceptions. + UnhandledException += Application_UnhandledException; + + // Standard XAML initialization + InitializeComponent(); + + // Phone-specific initialization + InitializePhoneApplication(); + + // Language display initialization + InitializeLanguage(); + + // Show graphics profiling information while debugging. + if (Debugger.IsAttached) + { + // Display the current frame rate counters. + Application.Current.Host.Settings.EnableFrameRateCounter = true; + + // Show the areas of the app that are being redrawn in each frame. + //Application.Current.Host.Settings.EnableRedrawRegions = true; + + // Enable non-production analysis visualization mode, + // which shows areas of a page that are handed off to GPU with a colored overlay. + //Application.Current.Host.Settings.EnableCacheVisualization = true; + + // Prevent the screen from turning off while under the debugger by disabling + // the application's idle detection. + // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run + // and consume battery power when the user is not using the phone. + PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; + } + + } + + // Code to execute when the application is launching (eg, from Start) + // This code will not execute when the application is reactivated + private void Application_Launching(object sender, LaunchingEventArgs e) + { + } + + // Code to execute when the application is activated (brought to foreground) + // This code will not execute when the application is first launched + private void Application_Activated(object sender, ActivatedEventArgs e) + { + } + + // Code to execute when the application is deactivated (sent to background) + // This code will not execute when the application is closing + private void Application_Deactivated(object sender, DeactivatedEventArgs e) + { + } + + // Code to execute when the application is closing (eg, user hit Back) + // This code will not execute when the application is deactivated + private void Application_Closing(object sender, ClosingEventArgs e) + { + } + + // Code to execute if a navigation fails + private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) + { + if (Debugger.IsAttached) + { + // A navigation has failed; break into the debugger + Debugger.Break(); + } + } + + // Code to execute on Unhandled Exceptions + private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) + { + if (Debugger.IsAttached) + { + // An unhandled exception has occurred; break into the debugger + Debugger.Break(); + } + } + + #region Phone application initialization + + // Avoid double-initialization + private bool phoneApplicationInitialized = false; + + // Do not add any additional code to this method + private void InitializePhoneApplication() + { + if (phoneApplicationInitialized) + return; + + // Create the frame but don't set it as RootVisual yet; this allows the splash + // screen to remain active until the application is ready to render. + RootFrame = new PhoneApplicationFrame(); + RootFrame.Navigated += CompleteInitializePhoneApplication; + + // Handle navigation failures + RootFrame.NavigationFailed += RootFrame_NavigationFailed; + + // Handle reset requests for clearing the backstack + RootFrame.Navigated += CheckForResetNavigation; + + // Ensure we don't initialize again + phoneApplicationInitialized = true; + } + + // Do not add any additional code to this method + private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) + { + // Set the root visual to allow the application to render + if (RootVisual != RootFrame) + RootVisual = RootFrame; + + // Remove this handler since it is no longer needed + RootFrame.Navigated -= CompleteInitializePhoneApplication; + } + + private void CheckForResetNavigation(object sender, NavigationEventArgs e) + { + // If the app has received a 'reset' navigation, then we need to check + // on the next navigation to see if the page stack should be reset + if (e.NavigationMode == NavigationMode.Reset) + RootFrame.Navigated += ClearBackStackAfterReset; + } + + private void ClearBackStackAfterReset(object sender, NavigationEventArgs e) + { + // Unregister the event so it doesn't get called again + RootFrame.Navigated -= ClearBackStackAfterReset; + + // Only clear the stack for 'new' (forward) and 'refresh' navigations + if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh) + return; + + // For UI consistency, clear the entire page stack + while (RootFrame.RemoveBackEntry() != null) + { + ; // do nothing + } + } + + #endregion + + // Initialize the app's font and flow direction as defined in its localized resource strings. + // + // To ensure that the font of your application is aligned with its supported languages and that the + // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage + // and ResourceFlowDirection should be initialized in each resx file to match these values with that + // file's culture. For example: + // + // AppResources.es-ES.resx + // ResourceLanguage's value should be "es-ES" + // ResourceFlowDirection's value should be "LeftToRight" + // + // AppResources.ar-SA.resx + // ResourceLanguage's value should be "ar-SA" + // ResourceFlowDirection's value should be "RightToLeft" + // + // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072. + // + private void InitializeLanguage() + { + try + { + // Set the font to match the display language defined by the + // ResourceLanguage resource string for each supported language. + // + // Fall back to the font of the neutral language if the Display + // language of the phone is not supported. + // + // If a compiler error is hit then ResourceLanguage is missing from + // the resource file. + RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage); + + // Set the FlowDirection of all elements under the root frame based + // on the ResourceFlowDirection resource string for each + // supported language. + // + // If a compiler error is hit then ResourceFlowDirection is missing from + // the resource file. + FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection); + RootFrame.FlowDirection = flow; + } + catch + { + // If an exception is caught here it is most likely due to either + // ResourceLangauge not being correctly set to a supported language + // code or ResourceFlowDirection is set to a value other than LeftToRight + // or RightToLeft. + + if (Debugger.IsAttached) + { + Debugger.Break(); + } + + throw; + } + } + } +} \ No newline at end of file diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png new file mode 100644 index 0000000..f7d2e97 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/AlignmentGrid.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png new file mode 100644 index 0000000..7d95d4e Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/ApplicationIcon.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png new file mode 100644 index 0000000..e0c59ac Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileLarge.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png new file mode 100644 index 0000000..e93b89d Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileMedium.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png new file mode 100644 index 0000000..550b1b5 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/FlipCycleTileSmall.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png new file mode 100644 index 0000000..686e6b5 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileMediumLarge.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png new file mode 100644 index 0000000..d4b5ede Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Assets/Tiles/IconicTileSmall.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml new file mode 100644 index 0000000..cb7a41f --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/AppManifest.xaml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png new file mode 100644 index 0000000..7d95d4e Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/ApplicationIcon.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png new file mode 100644 index 0000000..e0c59ac Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileLarge.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png new file mode 100644 index 0000000..e93b89d Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileMedium.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png new file mode 100644 index 0000000..550b1b5 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/FlipCycleTileSmall.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png new file mode 100644 index 0000000..686e6b5 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileMediumLarge.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png new file mode 100644 index 0000000..d4b5ede Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Assets/Tiles/IconicTileSmall.png differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll new file mode 100644 index 0000000..bb3e428 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.dll differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.pdb b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.pdb new file mode 100644 index 0000000..41d27eb Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp.pdb differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap new file mode 100644 index 0000000..52d5ae3 Binary files /dev/null and b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/MyFirstApp_Debug_AnyCPU.xap differ diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml new file mode 100644 index 0000000..c4639aa --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/Bin/Debug/Properties/WMAppManifest.xml @@ -0,0 +1,38 @@ + + + + + Assets\ApplicationIcon.png + + + + + + + + + + + + + + Assets\Tiles\FlipCycleTileSmall.png + 0 + Assets\Tiles\FlipCycleTileMedium.png + MyFirstApp + + + + + + + + + + + + + + + + diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs b/WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs new file mode 100644 index 0000000..63a8ef9 --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/LocalizedStrings.cs @@ -0,0 +1,14 @@ +using MyFirstApp.Resources; + +namespace MyFirstApp +{ + /// + /// Provides access to string resources. + /// + public class LocalizedStrings + { + private static AppResources _localizedResources = new AppResources(); + + public AppResources LocalizedResources { get { return _localizedResources; } } + } +} \ No newline at end of file diff --git a/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml b/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml new file mode 100644 index 0000000..a1adb74 --- /dev/null +++ b/WindowsPhone/MyFirstApp/MyFirstApp/MainPage.xaml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + +