Data Standard 中的每个对话框都基于一个扩展名为 .XAML(可扩展应用程序标记语言)的文件。可通过修改该 XAML 文件来自定义 Data Standard 对话框。
XAML 文件描述 Data Standard 对话框的布局,包括使用哪些控件(标签、文本框、组合框等),以及将这些控件绑定到哪些 CAD 或 Vault 特性。
XAML 文件是 XML 文件,可以用任何文本或 XML 编辑器进行编辑。免费 XML 编辑器的良好选择是 Microsoft XML Notepad 或任何其他可以格式化 XML 的编辑器。Autodesk 建议使用 Visual Studio(Express 或更高版本),以获得最佳编辑体验。由于 XAML 语法区分大小写,因此最好使用支持大写且能够捕捉拼写错误的编辑器。
如果 Data Standard 对话框需要显示更多、更少或不同的信息,请编辑 XAML 文件。位于“配置”文件夹中的 PS1 文件控制对话框行为。
本主题简要描述了最常用的控件。有关这些控件以及其他控件的详细信息,请参见 Microsoft 帮助页面。
每个 XAML 文件具有不同的部分:最常用的是“资源”、“样式”和控件部分。
“资源”部分包含在控件部分重用的定义。例如,如果您公司的颜色为绿色,可以定义在控件上显示的所有文字均为绿色。
触发器位于“样式”部分中。触发器定义控件的外观或行为,具体取决于给定的情况(例如,创建新记录或编辑现有记录)。但是,更加复杂的行为在 PS1 文件中进行定义。
控件部分(也称为布局区域)通常以控件 <Grid> 开始。网格将对话框拆分为行和列,像 Excel 表一样。请根据设计需要合并和拆分单元。在每个单元中,可以放置一个或多个控件,如用于显示简单文本的标签或用于输入文本的文本框。
XAML 文件的布局类似于包含行和列的表。这使得对话框及其控件成为动态的,这意味着如果您使用鼠标调整窗口的尺寸,则控件会自动调整尺寸。您还可以使用固定坐标,但在这种情况下,当用户调整对话框的尺寸或者某些用户配置较大的窗口字体时,该对话框中的控件将保持在其坐标位置,并且可能相互重叠或者不占用该对话框中的可用空间。出于此原因,Autodesk 建议您使用表方法,并且让每个控件在已定义的单元内部展开。
由于对话框与表类似,因此,当您设计对话框时,请考虑您需要多少行和列。通常,两列就足够了:左列具有固定宽度,用于标签;右列具有动态宽度,用于控件。这也是生成默认对话框的方式。根据需要多少行,在网格中进行相应的行定义。网格内的每个控件都参照行和列(始终从 0 开始),以便相应地显示控件。
在 XML 和 XAML 中,每个关键字都被嵌入在尖括号中(<关键字>)。通常,定义块以某个关键字开头,如 <Grid>,并且以带有斜线前缀的相同关键字结尾,如 </Grid>。在单行语句中,您也可能看到此语法:<Label ... />。该关键字的其他属性或在其内部嵌套的其他关键字定义了对话框的结构。XAML 区分大小写,因此请注意大小写。
Grid
Grid(网格)是用于控制采用表格结构的行和列中的所有内容的布局面板。所有单元(通过行和列组合的方式,每个单元都保持唯一)均可以包含多个控件,如标签和文本框。
这是网格的基本结构。网格需要一些在 Grid.RowDefinition 部分中定义的行。高度 30 定义固定高度值,并且以后不能更改。值“自动”可为行指定动态高度,以便行根据控件变高或变低。相同的值适用于列宽。
在定义您的行和列以后,您可以添加控件,如标签和文本框。必须以两个特性来附着控件:Grid.Column 和 Grid.Row。这两个特性定义了控件在网格中的位置。第一行为 0,因此第二行为 1,依此类推。
Label
Label(标签)是用户无法编辑的字段名称。它们包含表明标签用途的文本,以便用户知道必须在相应的文本框或组合框中插入哪个类型的值。例如,称为“注释”的标签可能位于一个空文本框的旁边。用户据此可以知道在该文本框中添加注释。
标签具有 Content 特性。此特性是针对标签显示的文本。
<Label Content="sample" Grid.Row ="0" Grid.Colum="0"/>
默认对话框内包含代码字符串,如 <Label Content="{Binding UIString[LBL2]}" ....>,其中,Content 被绑定到本地化的文字。当该对话框显示不同语言的文字时,使用此语法。如果您的项目只需要一种语言,请设置您要显示的文字。如果该对话框需要进行本地化,请使用本地化的语法。有关详细信息,请参见本地化。
Text Box
Text box(文本框)是用户可以编辑的字段。Data Standard 可以读取输入的值并将其用于其他操作。
<ComboBox Name="MaterialCombo" Text="{Binding Prop[Cost].Value}" Grid.Column="3" Grid.Row="6" ItemsSource="{Binding Prop[Cost].ListValues}"/>
Button
Button(按钮)是一种用户界面元素,为用户提供了一种简便的方式来触发“搜索”或“保存”等事件。按钮需要 Command 特性。此 Command 特性标识当该按钮被单击时,需要执行哪个操作。
<Button Command="{Binding PsCmd[MyCommand]}" Grid.Column="1" Margin="0,5,0,5" Width="80">Click</Button>
Command 被绑定到 PsCmd 关键字,该关键字帮助将命令操作与给定的 PowerShell 函数相链接。可以使用 CommandParameter="my args" 属性将参数传递给该函数。然后,该参数可以在该函数中作为 $dsParam 变量供其使用。
Binding
若要使用上述某个组件来控制或更改 Vault 文件特性,您需要了解 “{Binding Prop[myProp].Value}”。
通过 Binding(绑定),可以将值映射到特定的 CAD 或 Vault 特性。例如,可以将文本框的文本绑定到 Title 特性,以便每次在此特定文本框中输入内容时,都会自动更新Title 特性。绑定是一种自动执行特性更改的绝佳方式,它只将很少的工作留给最终用户来做。
Prop[ ] 是用于绑定的基本函数。使用它,您可以访问文件的特性(CAD 和 Vault)或相应的对象(文件夹、条目、自定义对象等)。如果想要将文本框映射到特性 Engineer,请编写如下代码:<TextBox text="{Binding Prop[Engineer].Value}"/>。当创建该文本框时,Prop[ ] 都会返回该特性的值。每当该文本框更新时,它都会通知负责将新值写入所映射的 file 特性的 Prop[ ] 函数。
可以使用 Visual Studio 编辑 .xaml 文件。Visual Studio 可帮助您放置元素并避免拼写错误。
现在您便处于新项目中了,您应该看到“MainWindow.xaml”选项卡、“MainWindow.xam.cs”选项卡以及其他选项卡。您不需要这些选项卡,只是需要提供的环境来编辑 .xaml 文件。为了编辑 .xaml,您需要链接到 .xaml 文件。不需要将 .xaml 移到项目中。
此时将会显示一个名为“加载时出现问题”的错误。
该对话框显示在设计窗口中。您可以在该对话框中选择一个区域,而 Visual Studio 将跳至 xaml 文件中的相应部分。开始插入或修改字段。有关详细信息,请参见 Data Standard 对话框。