Для чего используется App.xaml в Silverlight?

Шаблон проекта Silverlight по умолчанию создает файл под названием "App.xaml". Для чего используется этот файл?

13
задан Craig Schwarze 20 January 2010 в 02:30
поделиться

2 ответа

Вставка нескольких значений с подготовленными инструкциями PDO

Вставка нескольких значений в одну инструкцию execute. Почему, потому что согласно эта страница быстрее, чем обычные вставки.

$datafields = array('fielda', 'fieldb', ... );

$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);

больше значений данных, или у вас, вероятно, есть цикл, который заполняет данные.

С подготовленными вставками вам нужно знать поля, в которые вы вставляете, и количество полей для создания? местозаполнители для привязки параметров.

insert into table (fielda, fieldb, ... ) values (?,?...), (?,?...)....

В основном так мы хотим, чтобы оператор insert выглядел.

Код:

function placeholders($text, $count=0, $separator=","){
    $result = array();
    if($count > 0){
        for($x=0; $x<$count; $x++){
            $result[] = $text;
        }
    }

    return implode($separator, $result);
}

$pdo->beginTransaction(); // also helps speed up your inserts.
$insert_values = array();
foreach($data as $d){
    $question_marks[] = '('  . placeholders('?', sizeof($d)) . ')';
    $insert_values = array_merge($insert_values, array_values($d));
}

$sql = "INSERT INTO table (" . implode(",", $datafields ) . ") VALUES " .
       implode(',', $question_marks);

$stmt = $pdo->prepare ($sql);
try {
    $stmt->execute($insert_values);
} catch (PDOException $e){
    echo $e->getMessage();
}
$pdo->commit();

Хотя в моем тесте была разница всего в 1 секунду при использовании нескольких вставок и обычных подготовленных вставок с одним значением.

-121--3472984-

Если вы уже отменили один таймер, вы не можете повторно запустить его, вам придется создать новый.

Смотрите этот ответ , он содержит видео и исходный код, как я сделал нечто подобное.

В основном существует два метода: пауза и возобновление

В паузе:

public void pause() {
    this.timer.cancel();
}

В резюме:

public void resume() {
    this.timer = new Timer();
    this.timer.schedule( aTask, 0, 1000 );
}

Это делает восприятие паузы/возобновления.

Если таймеры выполняют различные действия в зависимости от состояния приложения, можно использовать параметр StatePattern

Определить абстрактное состояние:

abstract class TaskState  {
    public void run();
    public TaskState next();
}

И предоставить любое количество состояний. Ключ в том, что одно состояние ведет тебя в другое.

class InitialState extends TaskState {
    public void run() {
        System.out.println( "starting...");
    }
    public TaskState next() {
         return new FinalState();
    }
 }
 class FinalState extends TaskState  {
     public void run() {
         System.out.println("Finishing...");
     }
     public TaskState next(){
         return new InitialState();
    }
 }

Затем вы изменяете состояние таймера.

Timer timer = new Timer();
TaskState state = new InitialState();

timer.schedule( new TimerTask() {
     public void run() {
          this.state.run();
          if( shouldChangeState() ) {
              this.state = this.state.next();
           }
     }
 }, 0, 1000 );

Наконец, если требуется выполнить одно и то же, но с разными скоростями, можно использовать TimingFramework . Это немного сложнее, но давайте сделаем холодную анимацию, разрешив картине определенного компонента принимать занимать место с разной скоростью (вместо быть линейной)

-121--2178474-

Существует несколько различных вариантов использования этого файла. По существу это производный класс Приложений .

  • Глобальные объявления ресурсов - с помощью свойства Application.Resources можно определить ресурсы на уровне приложений. Такие как стили, шаблоны данных и шаблоны управления.
  • События запуска, выхода и обработки ошибок (код позади) - код позади этого файла используется для обработки событий уровня приложения, таких как Запуск , Выход и UnhandLedException .
  • Application.Current Reference (код позади) - это приложение доступно через глобальную статическую переменную Application.Current . Это можно сделать в любом месте приложения.
  • Назначение RootVisual (код позади) - RootVisual используется для настройки элемента управления Silverlight UserControl при запуске. Это свойство необходимо задать в событии Startup .
  • Установить приложение вне браузера (код позади) - с помощью метода Установить можно предложить пользователю установить приложение вне браузера.
  • Проверка наличия обновлений приложений (код позади) -Метод StartAndDownloadStartAsync используется, когда приложение не работает в браузере, чтобы убедиться, что XAP-файл является последним.
20
ответ дан 1 December 2019 в 22:07
поделиться

Стенд XAML для расширяемого языка разметки приложений. Это просто файл XML, который позволяет объявить пользовательский интерфейс для Silverlight и даже объектов .NET

app.xaml позволяет объявлять ресурсы, которые передаются по всем приложению. Также App.xaml.cs содержит события уровня приложения:

  • Application_Startup
  • Application_exit
  • Application_unhandledException
3
ответ дан 1 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: