テーブル ビューを作成する
テーブル ビューには、1 つ以上の列にデータが表示されます。 テーブル内の各行は .NET オブジェクトを表し、テーブルの各列はオブジェクトのプロパティまたはスクリプト値を表します。 オブジェクトのすべてのプロパティまたはオブジェクトのプロパティのサブセットを表示するテーブル ビューを定義できます。
テーブル ビューの表示
次の例は、Get-Service コマンドレットによって返される System.ServiceProcess.ServiceController オブジェクトを Windows PowerShell で表示する方法を示しています。 このオブジェクトの場合、Windows PowerShell では、Status
プロパティ、Name
プロパティ (このプロパティは ServiceName
プロパティのエイリアス プロパティ)、および DisplayName
プロパティを表示するテーブル ビューが定義されています。 テーブル内の各行は、コマンドレットによって返されるオブジェクトを表します。
Status Name DisplayName
------ ---- -----------
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application Layer Gateway Service
Stopped AppIDSvc Application Identity
Running Appinfo Application Information
テーブル ビューの定義
次の XML は、System.ServiceProcess.ServiceController オブジェクトを表示するためのテーブル ビュー スキーマを示しています。 テーブル ビューに表示する各プロパティを指定する必要があります。
<View>
<Name>service</Name>
<ViewSelectedBy>
<TypeName>System.ServiceProcess.ServiceController</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Width>8</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>18</Width>
</TableColumnHeader>
<TableColumnHeader>
<Width>38</Width>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Status</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>DisplayName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
リスト ビューを定義するには、次の XML 要素を使用します。
View 要素は、テーブル ビューの親要素です。 (これは、リスト ビュー、ワイド コントロール ビュー、カスタム コントロール ビューと同じ親要素です)。
Name 要素は、ビューの名前を指定します。 この要素は、すべてのビューに必要です。
ViewSelectedBy 要素は、ビューを使用するオブジェクトを定義します。 この要素は必須です。
GroupBy 要素 (この例では示されていません) は、新しいオブジェクト グループを表示するタイミングを定義します。 特定のプロパティまたはスクリプトの値が変更されるたびに、新しいグループが開始されます。 この要素は省略可能です。
Controls 要素 (この例では示されていません) は、テーブル ビューによって定義されるカスタム コントロールを定義します。 コントロールを使用すると、データの表示方法をさらに指定できます。 この要素は省略可能です。 ビューは、独自のカスタム コントロールを定義することも、書式設定ファイル内の任意のビューで使用できる一般的なコントロールを使用することもできます。 カスタム コントロールの詳細については、「カスタム コントロールの作成」を参照してください。
HideTableHeaders 要素 (この例では表示されません) は、テーブルの上部にラベルが表示されないことを指定します。 この要素は省略可能です。
TableControl テーブルのヘッダーと行の情報を定義する要素です。 他のすべてのビューと同様に、テーブル ビューには、スクリプトによって生成されたオブジェクトのプロパティまたは値の値を表示できます。
列ヘッダーの定義
TableHeaders 要素とその子要素は、テーブルの上部に表示される内容を定義します。
TableColumnHeader 要素は、テーブルの列の上部に表示される内容を定義します。 ヘッダーを表示する順序でこれらの要素を指定します。
使用できるこれらの要素の数に制限はありませんが、テーブル ビュー内の TableColumnHeader 要素 数は、使用する TableRowEntry 要素 数と等しい必要があります。
Label 要素は、表示されるテキストを指定します。 この要素は省略可能です。
Width 要素は、列の幅 (文字数) を指定します。 この要素は省略可能です。
Alignment 要素は、ラベルの表示方法を指定します。 ラベルは、左、右、中央に配置できます。 この要素は省略可能です。
テーブル行の定義
テーブル ビューは、TableRowEntries 要素の子要素を使用して、テーブルの行に表示されるデータを指定する 1 つ以上の定義を提供できます。 テーブルの行には複数の定義を指定できますが、使用される行定義に関係なく、行のヘッダーは同じままであることに注意してください。 通常、テーブルの定義は 1 つだけです。
次の例では、System.Diagnostics.Process オブジェクトの複数のプロパティの値を表示する 1 つの定義が表示されます。 テーブル ビューでは、プロパティの値またはスクリプトの値 (例では示されていません) を行に表示できます。
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Status</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Name</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>DisplayName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
次の XML 要素を使用して、行の定義を指定できます。
TableRowEntries 要素とその子要素は、テーブルの行に表示される内容を定義します。
TableRowEntry 要素は、行の定義を提供します。 TableRowEntry の少なくとも 1 つの が必要です。ただし、追加できる要素の数に上限はありません。 ほとんどの場合、ビューの定義は 1 つだけです。
EntrySelectedBy 要素は、特定の定義によって表示されるオブジェクトを指定します。 この要素は省略可能であり、異なるオブジェクトを表示する複数の TableRowEntry 要素を定義する場合にのみ必要です。
Wrap 要素は、列幅を超えるテキストを次の行に表示することを指定します。 既定では、列幅を超えるテキストは切り捨てられます。
TableColumnItems 要素は、値が行に表示されるプロパティまたはスクリプトを定義します。
TableColumnItem 要素は、行の列に値が表示されるプロパティまたはスクリプトを定義します。 行の各列には、TableColumnItem 要素が必要です。 最初のエントリが最初の列に表示され、2 番目の列に 2 番目のエントリが表示されます。
PropertyName 要素は、値が行に表示されるプロパティを指定します。 プロパティまたはスクリプトを指定する必要がありますが、両方を指定することはできません。
ScriptBlock 要素は、行に値が表示されるスクリプトを指定します。 スクリプトまたはプロパティを指定する必要がありますが、両方を指定することはできません。
FormatString 要素は、プロパティまたはスクリプト値の表示方法を定義する書式パターンを指定します。 この要素は省略可能です。
Alignment 要素は、プロパティまたはスクリプトの値の表示方法を指定します。 値は、左、右、中央に配置できます。 この要素は省略可能です。
テーブル ビューを使用するオブジェクトの定義
テーブル ビューを使用する .NET オブジェクトを定義するには、2 つの方法があります。 ViewSelectedBy 要素を使用して、ビューのすべての定義で表示できるオブジェクトを定義することも、EntrySelectedBy 要素を使用して、ビューの特定の定義によって表示されるオブジェクトを定義することもできます。 ほとんどの場合、ビューには定義が 1 つしかないため、オブジェクトは通常、ViewSelectedBy 要素によって定義されます。
次の例では、ViewSelectedBy および TypeName 要素を使用して、テーブル ビューによって表示されるオブジェクトを定義する方法を示します。 指定できる TypeName 要素の数に制限はなく、順序は重要ではありません。
<View>
<Name>System.ServiceProcess.ServiceController</Name>
<ViewSelectedBy>
<TypeName>System.ServiceProcess.ServiceController</TypeName>
</ViewSelectedBy>
<TableControl>...</TableControl>
</View>
次の XML 要素を使用して、テーブル ビューで使用されるオブジェクトを指定できます。
ViewSelectedBy 要素は、リスト ビューで表示されるオブジェクトを定義します。
TypeName 要素は、ビューによって表示される .NET オブジェクトを指定します。 完全修飾 .NET 型名が必要です。 ビューには少なくとも 1 つの型または選択セットを指定する必要がありますが、指定できる要素の最大数はありません。
次の例では、ViewSelectedBy を使用し、SelectionSetName 要素を します。 同じオブジェクトのリスト ビューとテーブル ビューを定義する場合など、複数のビューを使用して表示されるオブジェクトの関連セットがある場合は、選択セットを使用します。 選択セットを作成する方法の詳細については、「選択セット の定義を参照してください。
<View>
<Name>System.ServiceProcess.ServiceController</Name>
<ViewSelectedBy>
<SelectionSetName>.NET Type Set</SelectionSetName>
</ViewSelectedBy>
<TableControl>...</TableControl>
</View>
次の XML 要素を使用して、リスト ビューで使用されるオブジェクトを指定できます。
ViewSelectedBy 要素は、リスト ビューで表示されるオブジェクトを定義します。
SelectionSetName 要素は、ビューで表示できるオブジェクトのセットを指定します。 ビューには少なくとも 1 つの選択セットまたは種類を指定する必要がありますが、指定できる要素の最大数はありません。
次の例では、EntrySelectedBy 要素を使用して、テーブル ビューの特定の定義によって表示されるオブジェクトを定義する方法を示します。 この要素を使用すると、オブジェクトの .NET 型名、オブジェクトの選択セット、または定義を使用するタイミングを指定する選択条件を指定できます。 選択条件の作成方法の詳細については、「データを表示するための条件の定義」を参照してください。
注
テーブル ビューの複数の定義を作成する場合、異なる列ヘッダーを指定することはできません。 表示されるオブジェクトなど、テーブルの行に表示される内容のみを指定できます。
<TableRowEntry>
<EntrySelectedBy>
<TypeName>.NET Type</TypeName>
</EntrySelectedBy>
</TableRowEntry>
次の XML 要素を使用して、リスト ビューの特定の定義で使用されるオブジェクトを指定できます。
EntrySelectedBy 要素は、定義によって表示されるオブジェクトを定義します。
TypeName 要素は、定義によって表示される .NET オブジェクトを指定します。 この要素を使用する場合は、完全修飾 .NET 型名が必要です。 定義には少なくとも 1 つの型、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。
SelectionSetName 要素 (表示されません) は、この定義で表示できるオブジェクトのセットを指定します。 定義には少なくとも 1 つの型、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。
SelectionCondition 要素 (図示せず) は、この定義を使用するために存在する必要がある条件を指定します。 定義には少なくとも 1 つの型、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。 選択条件の定義の詳細については、「データを表示するための条件の定義」を参照してください。
書式指定文字列の使用
書式設定文字列をビューに追加して、データの表示方法をさらに定義できます。 次の例は、StartTime
プロパティの値の書式設定文字列を定義する方法を示しています。
<TableColumnItem>
<PropertyName>StartTime</PropertyName>
<FormatString>{0:MMM} {0:DD} {0:HH}:{0:MM}</FormatString>
</TableColumnItem>
次の XML 要素を使用して、書式パターンを指定できます。
TableColumnItem 要素は、行の列に値が表示されるプロパティまたはスクリプトを定義します。 行の各列には、TableColumnItem 要素が必要です。 最初のエントリが最初の列に表示され、2 番目の列に 2 番目のエントリが表示されます。
PropertyName 要素は、値が行に表示されるプロパティを指定します。 プロパティまたはスクリプトを指定する必要がありますが、両方を指定することはできません。
FormatString 要素は、プロパティまたはスクリプト値の表示方法を定義する書式パターンを指定します。
次の例では、スクリプトの値を書式設定するために ToString
メソッドが呼び出されます。 スクリプトは、オブジェクトの任意のメソッドを呼び出すことができます。 したがって、オブジェクトに書式設定パラメーターを持つメソッド (ToString
など) がある場合、スクリプトはそのメソッドを呼び出してスクリプトの出力値を書式設定できます。
<ListItem>
<ScriptBlock>
[string]::Format("{0,-10} {1,-8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))
</ScriptBlock>
</ListItem>
次の XML 要素を使用して、ToString
メソッドを呼び出すことができます。
TableColumnItem 要素は、行の列に値が表示されるプロパティまたはスクリプトを定義します。 行の各列には、TableColumnItem 要素が必要です。 最初のエントリが最初の列に表示され、2 番目の列に 2 番目のエントリが表示されます。
ScriptBlock 要素は、行に値が表示されるスクリプトを指定します。 スクリプトまたはプロパティを指定する必要がありますが、両方を指定することはできません。
こちらもご覧ください
PowerShell