Опубликован: 01.11.2011 | Доступ: свободный | Студентов: 1424 / 63 | Оценка: 3.84 / 3.44 | Длительность: 15:38:00
Специальности: Программист
Теги:
Практическая работа 24:
Контакты и календарь в Windows Phone 7
Далее, необходимо открыть файл App.xaml.cs и заполнить его следующим содержимым:
using System.Windows; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; namespace ContactsAndCalendarTestApp { public partial class App : Application { public static Microsoft.Phone.UserData.Contact con; public static Microsoft.Phone.UserData.Appointment appt; /// <summary> /// Provides easy access to the root frame of the Phone Application. /// </summary> /// <returns>The root frame of the Phone Application.</returns> public PhoneApplicationFrame RootFrame { get; private set; } /// <summary> /// Constructor for the Application object. /// </summary> public App() { // Global handler for uncaught exceptions. UnhandledException += Application_UnhandledException; // Standard Silverlight initialization InitializeComponent(); // Phone-specific initialization InitializePhoneApplication(); // Show graphics profiling information while debugging. if (System.Diagnostics.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; // Disable the application idle detection by setting the UserIdleDetectionMode property of the // application's PhoneApplicationService object to Disabled. // 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 (System.Diagnostics.Debugger.IsAttached) { // A navigation has failed; break into the debugger System.Diagnostics.Debugger.Break(); } } // Code to execute on Unhandled Exceptions private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { if (System.Diagnostics.Debugger.IsAttached) { // An unhandled exception has occurred; break into the debugger System.Diagnostics.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; // 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; } #endregion } }
Для нашего приложения понадобятся также файлы AppointmentDetails.xaml (AppointmentDetails.xaml.cs) и ContactDetails.xaml (ContactDetails.xaml.cs). Их нужно создать выполнив следующую последовательность действий: Solution Explorer -> Add -> New Item -> Windows Phone Portrait Page -> AppointmentDetails.xaml (ContactDetails.xaml) и Solution Explorer -> Add -> New Item -> Code File -> AppointmentDetails.xaml.cs (ContactDetails.xaml.cs).
Первые два файла для отображения результатов поиска по дате, вторые два - по контактной информации.
Итак, содержимое файла AppointmentDetails.xaml:
<phone:PhoneApplicationPage x:Class="ContactsAndCalendarTestApp.AppointmentDetails" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> <phone:PhoneApplicationPage.Resources> <DataTemplate x:Key="AttendeeTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding Path=DisplayName, Mode=OneWay}" TextWrapping="Wrap" /> <TextBlock Grid.Column="1" Text=": " /> <TextBlock Grid.Column="2" Text="{Binding Path=EmailAddress, Mode=OneWay}" TextWrapping="Wrap" /> </Grid> </DataTemplate> </phone:PhoneApplicationPage.Resources> <!--LayoutRoot is the root grid where all page content is placed--> <Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!--TitlePanel contains the name of the application and page title--> <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,6"> <TextBlock x:Name="ApplicationTitle" Text="Контакты и календарь" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="Подробности" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <TextBlock Grid.Row="1" Text="{Binding Path=Subject, Mode=OneWay}" Foreground="{StaticResource PhoneAccentBrush}" FontSize="{StaticResource PhoneFontSizeExtraLarge}" TextWrapping="Wrap" /> <!--ContentPanel - place additional content here--> <ScrollViewer x:Name="ContentPanel" Grid.Row="2" Margin="12,0,12,0"> <StackPanel> <TextBlock Text="{Binding Path=Details, Mode=OneWay}" Margin="12,0,0,0" TextWrapping="Wrap" /> <TextBlock Text="{Binding Path=StartTime, Mode=OneWay}" Margin="12,12,0,0"/> <TextBlock Text="{Binding Path=EndTime, Mode=OneWay}" Margin="12,0,0,0"/> <TextBlock Text="{Binding Path=Location, Mode=OneWay}" Margin="12,12,0,0"/> <TextBlock Text="{Binding Path=Status, Mode=OneWay}" Margin="12,12,0,0"/> <TextBlock Text="Органайзер" Margin="12,12,0,0" /> <ListBox ItemsSource="{Binding Path=Organizer}" ItemTemplate="{StaticResource AttendeeTemplate}" Margin="24,0,0,0" /> <TextBlock Text="Участники" Margin="12,12,0,0" /> <ListBox ItemsSource="{Binding Path=Attendees}" ItemTemplate="{StaticResource AttendeeTemplate}" Margin="24,0,0,0" /> <TextBlock Text="Учетные записи" Margin="12,12,0,0" /> <ListBox ItemsSource="{Binding Path=Accounts}" Margin="24,0,0,0"> <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding Path=Kind, Mode=OneWay}" /> <TextBlock Grid.Column="1" Text=": " /> <TextBlock Grid.Column="2" Text="{Binding Path=Name, Mode=OneWay}" /> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </StackPanel> </ScrollViewer> </Grid> </phone:PhoneApplicationPage>
Содержимое файла AppointmentDetails.xaml.cs:
using Microsoft.Phone.Controls; namespace ContactsAndCalendarTestApp { public partial class AppointmentDetails : PhoneApplicationPage { public AppointmentDetails() { InitializeComponent(); } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); //Set the data context for this page to the selected appointment this.DataContext = App.appt; } } }