2/27/2007 7:45:00 AM

23-го февраля, видимо в качестве праздничного подарка, был выпущен релиз Composite Application Block, который поддерживает WPF. Ура!

Пока создатели SmartClient Software Factory грозятся выпустить в конце апреля новую версию их продукта, которая будет содержать инструменты для добавления View, использующих WPF (и еще нескольких новых фич), CAB с поддержкой WPF можно скачать здесь: http://www.codeplex.com/wpfcab

Для работы с ним нужно:

  1. Создать "пустой" WPF-проект.
  2. Удалить Window1.xaml и выкинуть из файла App.xaml упоминания о нем.
  3. Добавить в заголовок App.xml следующее указание неймспейса:

    xmlns:cab="clr-namespace:Microsoft.Practices.CompositeUI.Windows.Workspaces;assembly=Microsoft.Practices.CompositeUI.Windows"

  4. Создать в нем класс-аппликейшн, например ShellApplication, который унаследовать от ApplicationShellApplication<MainWorkItem, App>. Здесь MainWorkItem - это "главный" воркайтем приложения, а App - это класс, который уже есть в Вашем проекте и описывается файлами App.xaml и App.xaml.cs
  5. Создать класс Program (имя может быть любым), в котором определить статический метод Main так, как это делается в "обычном" WinForms-приложении. Запустить в нем созданный в п.2 класс-аппликейшн:
    new ShellApplication().Run();
  6. Установить класс Program как стартовый класс в свойствах приложения.

Все, проект WPF CAB готов. Дальше все как обычно, кроме того, что вместо WinForms можно использовать WPF для создания View.

Кстати, если сейчас запустить приложение, то у него даже не будет окна. Для того, чтобы исправить этот "недостаток", нужно создать новую WPF-форму с именем, скажем, ShellWinfow.xaml и переопределить известный метод в ShellApplication:

protected override void AfterShellCreated()
{
   
base.AfterShellCreated();
   
ShellWindow mainWindow = RootWorkItem.Items.AddNew<ShellWindow>();
   
Shell.MainWindow = mainWindow;
    mainWindow.Show();
}

Ну и еще одна "фича". В тех элементах, где планируется использование воркспейсов (DeckWorkspace, TabWorkspace, etc), в заголовок можно добавить следующий атрибут: xmlns:cab="http://schemas.microsoft.com/cab/wpf
Это позволит потом определять воркспейсы в XAML-файле следующим образом:

<cab:DeckWorkspace x:Name="headerWorkspace"/>

В остальном работа с CAB не изменилась.

Более подробно можно посмотреть в примере (BankShell), который теперь тоже "переведен" на CAB WPF.

Tags: ,

Comments are closed

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter


Recent posts

Archive

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in