Data Standard のすべてのダイアログは、拡張子 .xaml (Extensible Application Markup Language)が付いたファイルが基準となります。XAML ファイルを修正して、Data Standard ダイアログをカスタマイズします。
XAML ファイルには、Data Standard ダイアログのレイアウトが記述されます。具体的には、どのコントロール(ラベル、テキストボックス、コンボボックスなど)を使用するか、どの CAD または Vault プロパティにコントロールをバインドするかなどです。
XAML ファイルは XML ファイルで、テキスト/XML エディタで編集することができます。無償の XML エディタでお勧めは、Microsoft XML Notepad です。XML の書式設定ができれば他のエディタでもかまいません。オートデスクは、編集で最高のエクスペリエンスを得られるよう Visual Studio(Express 以上)を推奨します。XAML の構文では、大文字と小文字は区別されるため、大文字と小文字がサポートされ、入力ミスをキャッチするエディタを使用する方法が最適です。
Data Standard のダイアログで、表示する情報量に差がある場合、または異なる情報を表示する必要がある場合は、XAML ファイルを編集します。Configuration フォルダの PS1 ファイルは、ダイアログの動作をコントロールします 。
このトピックでは、よく使用されるコントロールの簡単な説明が表示されます。これらのコントロール、およびその他のコントロールの詳細については、Microsoft のヘルプ ページを参照してください。
XAML ファイルには複数のセクションがあり、最もよく使用するのがリソース、スタイル、およびコントロールです。
リソース セクションには、コントロール セクションで再使用される定義があります。会社の色が緑で表示されている場合は、コントロールに表示されるすべてのテキストが緑で表示されるよう定義することができます。
トリガはスタイル セクションにあります。トリガは、指定された場合(たとえば、新規レコードの作成や既存レコードの編集)にコントロールの表示や動作を定義します。しかし、より複雑な動作は、PS1 ファイルで定義されます。
コントロール セクション、またはレイアウトの領域は通常、コントロール <Grid>
で始まります。グリッドは、Excel のテーブルのように、行と列にダイアログを分割します。デザインで必要な場合には、セルの分割や結合ができます。各セルには、簡単なテキストや文字入力テキストボックスのラベルなど、1 つまたは複数のコントロールを配置することができます。
XAML ファイルのレイアウトは、行と列のあるテーブルと似ています。このため、ダイアログやコントロールは動的です。つまり、マウスによりウィンドウをサイズ変更すると、コントロールが自動的にサイズ変更されることを意味します。また、座標を固定して作業することもできます。ただしこの場合、ダイアログがユーザによってサイズ変更されたり、一部のユーザが Windows のフォント設定を大きくすると、ダイアログのコントロールで座標は変わらないまま、オーバーラップしたり、ダイアログで利用可能なスペースを使用しない可能性があります。このため、テーブルの方法を使用するか、定義されたセル内のすべてのコントロールを展開することをお勧めします。
ダイアログはテーブルに似ているため、ダイアログを設計するときは、必要な数の列と行としてとらえます。通常は、列は 2 つで十分です。左側の 1 列をラベル用の固定幅、右側の 1 列をコントロール用の動的な幅とします。これは、既定のダイアログを作成する方法でもあります。必要な数の行によって、行の定義に従ってグリッドを定義します。グリッド内のコントロールはすべて、行と列(常に 0 から始まる)への参照があるため、これをもとにコントロールが表示されます。
XML および XAML では、すべてのキーワードは山括弧で囲まれています(<キーワード>)。通常、定義ブロックは、
グリッド(Grid)は、行と列の表構造のすべてをコントロールするレイアウト パネルです。セルは、行と列の組み合わせで一意になります。すべてのセルには、ラベルやテキスト ボックスなどのコントロールを複数含めることができます。
これがグリッドの基本構造です。グリッドには、Grid.RowDefinition 部で定義する行が必要です。Height の値を 30 に指定した場合、高さの値が固定され、指定後は変更できません。値を "auto" に指定した場合、行の高さが動的になり、コントロールに応じて、厚くなったり薄くなります。同じ値が列の幅に適用されます。
行と列を定義した後、ラベルやテキスト ボックスなどのコントロールを追加できます。コントロールは、Grid.Column と Grid.Row の 2 つのプロパティでアタッチする必要があります。これらのプロパティは、グリッド内のコントロールの位置を定義します。最初の行には 0、2 番目の行には 1 というように順次指定します。
ラベル(Label)はフィールド名で、ユーザは編集できません。ラベルには、何のラベルかを示すテキストを指定します。このテキストを基に、ユーザは対応するテキスト ボックスやコンボ ボックスにどのようなタイプの値を挿入する必要があるかを把握できます。たとえば、Comments というラベルを空のテキスト ボックスの横に配置したとします。この場合、ユーザはテキスト ボックスにコメントを入力することを把握できます。
Label には Content プロパティがあります。このプロパティは、ラベルに表示するテキストです。
<Label Content="sample" Grid.Row ="0" Grid.Colum="0"/>
既定のダイアログには、この<Label Content="{Binding UIString\[LBL2\]}" ....>
のようなコード文字列があり、Content はローカライズされたテキストにバインドされます。この構文は、ダイアログで複数言語のテキストが表示されている場合に使用されます。プロジェクトで 1 つの言語のみを必要とする場合は、表示するテキストを設定します。ダイアログをローカライズする必要がある場合は、ローカリゼーションの構文を使用します。詳細については、「ローカライズ」を参照してください。
テキスト ボックス(TextBox)は、ユーザが編集できるフィールドです。Data Standard は入力値を読み取り、他の処理に使用することができます。
テキスト ボックスでは次のプロパティが必要です。
content="Enter Comments Here"
と入力すると、ダイアログが開いたときにテキスト ボックスに[コメントをここに入力]と表示されます。<ComboBox Name="MaterialCombo" Text="{Binding Prop[Cost].Value}" Grid.Column="3" Grid.Row="6" ItemsSource="{Binding Prop[Cost].ListValues}"/>
ボタン(Button)は、ユーザが検索や保存などのイベントを簡単にトリガできるユーザ インタフェース要素です。ボタンでは Command プロパティが必要です。この Command プロパティは、ボタンがクリックされたときにどのアクションが実行されるかを識別します。
<Button Command="{Binding PsCmd[MyCommand]}" Grid.Column="1" Margin="0,5,0,5" Width="80">Click</Button>
コマンドは、指定した PowerShell 関数とコマンド アクションをリンクできる PsCmd
キーワードにバインドされています。CommandParameter="my args"
属性を使用して、関数に引数を渡すことができます。この引数は、関数内で $dsParam
変数として使用できるようになります。
これらのコンポーネントのいずれかを使用して、Vault のファイル プロパティを変更するには、"{Binding Prop[myProp ].Value}"
を理解する必要があります。
バインドを行うことで、CAD または Vault のプロパティに含める値をマッピングできます。たとえば、テキスト ボックスのテキストを Title プロパティにバインドした場合、このテキスト ボックスに何かの値が入力されるたびに、Title プロパティが自動的に更新されます。バインドは、プロパティの変更を自動化する優れた方法です。このため、エンド ユーザが行う作業も少なくなります。
Prop[ ]
は、バインドに不可欠な関数です。これにより、ファイルのプロパティ(CAD および Vault)またはそのオブジェクト(フォルダ、アイテム、カスタム オブジェクトなど)にアクセスできます。テキスト ボックスを Engineer プロパティにマッピングする場合は、<TextBox text="{Binding Prop[Engineer].Value}"/>
と記述します。テキスト ボックスが作成されると、Prop[ ]
はこのプロパティの値を返します。テキスト ボックスが更新されるたびに、マッピングされているファイル プロパティに新しい値が記述されたことが Prop[ ]
関数に通知されます。
Visual Studio を使用して、.xaml ファイルを編集することができます。Visual Studio では、要素を簡単に配置したり、スペル ミスを防止することができます。
Visual Studio での設定の例:
新しいプロジェクトを作成したら、[MainWindow.xaml]タブや[MainWindow.xam.cs]タブなどのタブが表示されます。これらのタブは必要ありません。.xaml ファイルの編集用に付属している環境で十分です。.xaml を編集するために、.xaml ファイルにリンクします。.xaml をプロジェクトに取り込む必要はありません。
ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] > [既存の項目]に移動します。
ソリューション エクスプローラーで、.xaml ファイルを参照し、[リンクとして追加]を選択します。
ソリューション エクスプローラーで、.xaml ファイルが表示されたら、.xaml ファイルをダブルクリックします。
[読み込みで問題が発生しました]というエラーが表示されます。
Visual Studio ウィンドウの下部にある[エラー一覧]で、アセンブリおよびプロパティまたはリソースが見つからないというエラーを特定します。
ソリューション エクスプローラーに移動し、[参照設定]を右クリックします。
[参照の追加]を選択します。
[参照]タブを選択します。
CAD 用に変更する場合、ソリューション エクスプローラーで修正する .cfg ファイルを選択します。
デザイン ウィンドウでダイアログが表示されます。ダイアログ内の領域を選択すると、xaml ファイル内の対応する箇所にジャンプできます。フィールドを挿入または修正します。詳細については、「Data Standard ダイアログ」を参照してください。
<Grid.RowDefinitions>
と <RowDefinition .../>
があります。新しい行を表示する <RowDefinition/>
を新たに追加します。その値に対して、プロパティ Height を設定します。値は固定値または自動(最小スペース)または * (最大スペース)を設定します。Grid.Row
および Grid.Column
では、コントロールを配置する行と列を定義することができます。コントロールのバインドも定義します。これにより、コントロールとプロパティとの間でデータをやり取りできます。CAD 向けに変更する場合は、CFG ファイルのプロパティも設定する必要があります。Grid.Row
属性の増分によって下に移動する必要があります。