Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пак Новакова + / LabASP2(1-8)СоловьёвЯрославцева.doc
Скачиваний:
47
Добавлен:
03.06.2014
Размер:
2.59 Mб
Скачать

Упражнение 3 - Добавление кода

  1. В открывающем теге для TextBlock сообщения добавьте следующее свойство

имени message1.

x:Name="message1"

  1. Аналогично:

x:Name="name1"

x:Name="cal1"

x:Name="okButton"

  1. Добавим обработчик событий на кнопку:

private void okButton_Click(object sender, RoutedEventArgs e)

{

string dateString;

if (cal1.SelectedDate == null)

{

dateString = "<date not selected>";

}

else

{

dateString = cal1.SelectedDate.ToString();

}

message1.Text = "Hi " + name1.Text + "\n" +

"Selected Date: " + dateString; }

Рис. 3

Упражнение 4 - Создание динамического макета

  1. В MainPage.xaml в элементе Grid..::..RowDefinitions изменим значения Height на

следующие:

<RowDefinition Height="Auto"/>

<RowDefinition Height="*" MinHeight="220"/>

<RowDefinition Height="Auto"/>

  1. В элементе Grid..::..ColumnDefinitions изменим значения Width на следующие

<ColumnDefinition Width="Auto" />

<ColumnDefinition Width="*"/>

  1. Добавим следующее свойство Margin в элементы TextBlock имени, даты и

сообщения

Margin="10,5,10,5"

  1. Добавим следующее свойство FontSize в TextBlock сообщения для увеличения

размера шрифта.

FontSize="20"

Листинг

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace HelloSilverlight

{

public partial class MainPage : UserControl

{

public MainPage()

{

InitializeComponent();

}

private void okButton_Click(object sender, RoutedEventArgs e)

{

string dateString = "";

if (cal1.SelectedDate == null) {

dateString = "<date not selected>";

} else {

dateString = cal1.SelectedDate.ToString(); }

message1.Text = "Hi " + name1.Text + "\n" + "Selected Date: " + dateString;}

<UserControl xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls" x:Class="HelloSilverlight.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d"

d:DesignHeight="300" d:DesignWidth="400">

<Grid x:Name="LayoutRoot" Background="Aqua" ShowGridLines="True">

<Grid.RowDefinitions>

<RowDefinition Height="Auto"/>

<RowDefinition Height="*" MinHeight="220"/>

<RowDefinition Height="Auto"/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition Width="Auto" />

<ColumnDefinition Width="*"/>

</Grid.ColumnDefinitions>

<TextBlock Text= "Date:" Grid.Row="1" Grid.Column="0" Margin="10,5,10,5" FontSize="20"/>

<TextBlock Text="Message" Grid.Row="2" Grid.Column="0" x:Name="message1" Margin="10,5,10,5" FontSize="20"/>

<TextBlock Text="Name" Grid.ColumnSpan="2" Margin="10,5,10,5" FontSize="20"/>

<TextBox Text="Your Name" Grid.Row="0" Grid.Column="1" Width="150" HorizontalAlignment="Left" x:Name="name1" Margin="0,5,0,5"/>

<StackPanel Grid.Column="1" Grid.Row="1" Orientation="Vertical">

<my:Calendar x:Name="cal1" Margin="0,5,0,5"/>

<Button Click="okButton_Click" Width="75" Height="25" HorizontalAlignment="Left" Content="OK" x:Name="okButton" Margin="0,5,0,5"/>

</StackPanel>

</Grid>

</UserControl>

HelloSilverlight.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace HelloSilverlight

{

public partial class App : Application

{

public App()

{

this.Startup += this.Application_Startup;

this.Exit += this.Application_Exit;

this.UnhandledException += this.Application_UnhandledException;

InitializeComponent();}

private void Application_Startup(object sender, StartupEventArgs e)

{

this.RootVisual = new MainPage();

}

private void Application_Exit(object sender, EventArgs e) {}

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)

{

// Если приложение выполняется вне отладчика, воспользуйтесь для сообщения об исключении

// механизмом исключений браузера. В IE исключение будет отображаться в виде желтого значка оповещения

// в строке состояния, а в Firefox - в виде ошибки сценария.

if (!System.Diagnostics.Debugger.IsAttached)

{

// ПРИМЕЧАНИЕ. Это позволит приложению выполняться после того, как исключение было выдано,

// но не было обработано.

// Для рабочих приложений такую обработку ошибок следует заменить на код,

// оповещающий веб-сайт об ошибке и останавливающий работу приложения.

e.Handled = true;

Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); }); } }

private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)

{

try

{

string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;

errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");

System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");}

catch (Exception) }}

Результат работы программы:

Рис. 4.Результат

Вывод:В данной лабораторной работе мы познакомились с использованием Microsoft Silverlight для предоставления динамического контента. Познакомились с языком разметкиdesktop иweb приложенийXAML.

55