65.9K
CodeProject 正在变化。 阅读更多。
Home

开始使用 Acropolis

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (6投票s)

2007年8月14日

CPOL

6分钟阅读

viewsIcon

30107

本文探讨了 Acropolis 的优势,重点介绍了其在页面设计和代码之间切换的能力,从而实现更快的开发速度。

引言

在 Acropolis 中,开发过程(例如创建窗口并编写其按钮事件的代码)可以分为两部分。Acropolis 中有两个重要概念:Part 和 View。View 仅指窗体的设计,而 Part 指与 View 对应的代码。因此,您的窗体设计与代码完全分离,这两种开发可以同时进行。也就是说,在开发人员编写代码的同时,设计人员可以设计窗体。稍后,Part 和 View 可以绑定在一起。这样,开发速度会更快,组件会是松耦合的,并且可以轻松进行更改。

要连接这两个项目(即 Part 和 View),可以使用连接点。例如,要在 Part 中针对 View 中的按钮单击执行代码,您需要使用连接点。要绑定方法,您将使用 ComponentCommand,要绑定属性,您将使用 ComponentProperty。讨论的概述可以在图 1 中找到。然而,随着您深入研究这个示例,您就会了解这一点。

Screenshot - image001.png

图 1:Part 和 View 如何通过连接点连接

要求

要运行该应用程序,您需要安装 Orcas Beta 1。此外,您还需要安装 Acropolis。您可以从 MSDN 网站下载这两个组件。

项目开发

现在,开始开发项目。单击 **文件** -> **新建** -> **项目**。然后,在 **项目类型** 部分,选择 **Acropolis**。在模板部分,选择 **WPF 应用程序**。

Screenshot - image004.jpg

图 2:新建项目窗口

输入项目名称后,将出现一个新窗口,如下所示。此向导将允许您进行一些设置。在不进行任何更改的情况下,单击 **完成**。

Screenshot - image005.png

图 3:Acropolis 应用程序向导

您会发现有两个 XAML(发音为 ZAMEL)文件:Application.xamlWindow.xaml。接下来,右键单击解决方案资源管理器中的项目 `AcropolisSample`,然后单击 **添加 -> 新建项**。在“**添加新项**”窗口中,选择“**Acropolis Part and View (WPF)**”,然后单击 **添加** 按钮。您会发现有两个文件已添加到您的项目中:Sample.xamlSampleView.xaml

让我们稍微理论化一下。在 Acropolis 中,有 Part 和 View。让我们考虑一下 .NET 中的窗口窗体。在这个窗口中,您可以将设计与 Acropolis 可以完成的逻辑分离开。在 Part 中,您将编写 XAML(即 Sample.xaml)逻辑,而在 SampleView.xaml 中,您将设计您的窗体。因此,您的设计与代码完全分离。设计人员可以设计窗体,而程序员可以编写代码。让我们继续这个项目。

双击 SampleView.xaml,将显示一个设计器。设计器将分为两部分:XAM 和 Design。单击 Design 部分,然后从 toolbox 中拖动一个 TextBoxButton。如果文本框未出现,请不要担心。只需将以下代码替换为...

<Grid>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
        Text="{Binding Part.Title}"/>
</Grid>

...替换为...

<Grid>
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center"
        Text="{Binding Part.Title}"/>
    <TextBox Height="26" Margin="59,41,115,0" Name="textBox1"
        VerticalAlignment="Top" />
    <Button Margin="84,82.7766666666667,115,92.5" Name="button1" >
        Click</Button>
</Grid>

此代码将向您显示一个文本框和一个按钮。您已在 sampleView.xaml 中设计了视图,但您需要在 Part(即 Sample.xaml)中编写针对按钮单击的代码。您还需要使用 TextBox 值来执行一些逻辑工作,但 TextBox 在 View(即 SampleView.xaml)中,而您需要将代码编写在 Part(即 Sample.xaml)中。因此,要在 Sample.xaml 中使用 textbox 值,您需要创建一个 connectionpoint

现在双击 Sample.xaml,将出现设计/XAML 窗口。单击窗口的设计部分。现在您将添加 ComponentProperty(它将链接到 TextBox)和 ComponentCommand(它将在按钮单击时执行)。双击工具箱的 Acropolis Framework 部分中的 ComponentProperty。属性将添加到您的设计器中。双击 ComponentCommand,命令将添加到您的设计器中。请记住,在单击 toolbox 时,焦点应放在窗口的设计部分,而不是 XAML 部分。以下屏幕显示了当前状态

Screenshot - image006.jpg

图 4:Orcas 窗口

现在单击 XAML 部分并更改代码...

<AcropolisComponent.ConnectionPoints>
    <ComponentCommand Name="ComponentCommand1" />
    <ComponentProperty Name="ComponentProperty1" />
</AcropolisComponent.ConnectionPoints>

...改为...

<AcropolisComponent.ConnectionPoints>
    <ComponentCommand Name="btnClickHandler" CommandExecuted="showName" 
        Description="Show Name" />
    <ComponentProperty Name="MyText" />
</AcropolisComponent.ConnectionPoints>

在上面的表中,CommandExecute 是当命令被调用时将执行的方法的名称。Description 是菜单项的标题,如果您想通过菜单执行该命令,它将显示在菜单中。现在您需要在 sample.xaml 的代码隐藏文件中编写 showName 方法,该文件是 sample.xaml.cs。在解决方案资源管理器中展开 Sample.xaml,然后双击 Sample.xaml.cs 文件。在此窗口中,编写以下方法

private void showName(object sender, 
    ComponentCommandExecutionEventArgs<object> e)
{
    System.Windows.MessageBox.Show(MyText.Value.ToString());
}

此时,我们已经准备好了 Part 和 View,现在我们需要将它们连接起来。双击 SampleView.xaml,将显示设计器。更改 SampleView.xaml 中的 TextBoxButton 部分。现在代码如下所示

<TextBox Height="26" Margin="59,41,115,0" Name="textBox1"
    VerticalAlignment="Top" Text="{Binding MyText.Value}" />
<Button Margin="84,82.7766666666667,115,92.5" Name="button1"  
    Click="btnEventHandler">Click</Button>

在上面的表中,我将 Text 绑定到了 PropertyName.Value。在这种情况下,它代表 MyText.Value。此外,我还编写了一个方法名来处理按钮的单击事件。在这种情况下,处理程序是 btnEventHandler。现在您将在 View 的代码隐藏文件(即 SampleView.xaml.cs)中编写 btnEventHandler。从解决方案资源管理器打开 SampleView.xaml.cs 文件并编写以下代码

private void btnEventHandler(object sender, EventArgs e)
{
    Part.BtnClickHandler.Execute(null);
}

前面的代码段执行 Part(即 Sample.xaml)的 BtnClickHandler。现在您需要将迄今为止开发的 Part 附加到应用程序,以便可以显示它。请记住,Part 不能单独显示;它必须附加到一个主机。在这种情况下,主机是 Application.xaml。为了使 Part 可用于部署到应用程序中,请**生成解决方案**。

生成解决方案后,您将在工具箱的**用户组件 (Acropolis)** 中找到一个 **Sample** Part。现在打开 Application.xaml 文件,并将焦点放在文件的设计部分。然后双击工具箱中的**Sample**,Sample Part 将添加到您的应用程序中。**保存**解决方案并**运行**它。

当您运行应用程序时,将有一个 TextBox 和一个 Button。在 TextBox 中输入您的姓名后,单击 Button 时,TextBox 的值将显示在消息框中。为了执行 Part(即 Sample.xaml.cs)中的 showName 方法,我在 View(sampleView.xaml.cs)中使用了 Button click 事件。但是,默认情况下,Acropolis 会为 Part 中的每个 ComponentCommand 添加菜单。您可以通过单击默认菜单来执行 showName 方法,如下面的圆圈所示

Screenshot - image009.png

图 5:运行中的应用程序

优点

我在 Acropolis 中发现的主要好处是开发速度更快。当用户设计页面时,同时可以有另一位用户编写页面背后的逻辑。最后,这两者可以绑定起来。此外,由于页面设计和页面代码是完全分离的,称为“松耦合”,因此可以轻松进行更改。例如,如果业务逻辑有任何更改,则只需更改 Part,而 View 不会受到影响。因此,开发和测试时间将会缩短。我希望下次作为一个网页设计师,将引入一个 XAML 设计师。

结论

最后,我们开发了一个项目,其中 View 中的按钮单击由 Part 处理。此外,TextBox 值通过连接点从 Part 进行操作。您还可以从您的 Part 调用服务(使用 WCF 概念开发的)。

历史

  • 2007 年 8 月 14 日:发布原始版本
  • 2007 年 9 月 7 日:更新
© . All rights reserved.