動態性質可讓您顯示和編輯的性質會被指定給 Vault 品類,而不需要修改 XAML 檔案中。
加入新性質加入至 Vault 品類,這些性質會自動出現在下一次「Data Standard」對話方塊或頁籤會如圖所示。
動態的性質是由 XAML DataGrid 控制具有兩個欄。 第一欄是唯讀的,並展示的性質名稱。第二欄是更複雜,因為它已顯示不同的控制項不同類型 (例如,「 組合性質 用於使用預先定義的值清單中,DataPicker」性質的「類型 」)。
DataGrid 控制
若要加入動態的性質控制」對話方塊中,以下線需要 :
...
<DataGrid x:Name="DSDynamicCategoryProperties"
AutoGenerateColumns="False"
HeadersVisibility="Column"
ItemsSource="{Binding DynamicProperties}"
ScrollViewer.CanContentScroll="False"
HorizontalGridLinesBrush="WhiteSmoke"
VerticalGridLinesBrush="WhiteSmoke">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}"
SortDirection="Ascending"
Width="140"
IsReadOnly="True" >
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.UIString[LBL64], RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn CellStyle="{StaticResource DynamicDataGridCellStyle}"
Width="*" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.UIString[LBL65], RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
...
第二欄使用型式 ( cellStyle = " {StaticResourceDynamicDataGridCellStyle} ),也必須加入至 XAML 檔案中的資源的區段。 此可所有不同的控制 :
...
<Window.Resources>
<Style x:Key="DynamicDataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ComboBox ItemsSource="{Binding ListValues}" Text="{WPF:ValidatedBinding Value}" IsEditable="True"></ComboBox>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static DataGrid.FocusBorderBrushKey}}"/>
</Trigger>
<DataTrigger Binding="{Binding ListValues.Count}" Value="0">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBox Text="{WPF:ValidatedBinding Value}"></TextBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Typ}" Value="DateTime">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<DatePicker SelectedDate="{WPF:ValidatedBinding Value, StringFormat='dd/MM/yyyy'}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Typ}" Value="Bool">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ComboBox Text="{WPF:ValidatedBinding Value}">
<system:Boolean>True</system:Boolean>
<system:Boolean>False</system:Boolean>
</ComboBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
...
XAML 併入 DynamicProperties
查看該行代碼在前一個範例 :
ItemsSource = " {Binding DynamicProperties} "
取得此代碼清單中的 iProperty 元素指定至的品類。 「 iProperty 」 物件具有等,這些成員可以用於繫結」:
XAML 併入 DynamicPropertiesCategory
為了讓 DynamicProperties 併入傳回內容,Vault 品類必須指定第一個。 在「預設施隨附的「Data Standard」, DynamicPropertiesCategory 取得指定至一個組合方塊 :
...
<ComboBox
Name="Categories"
ItemsSource="{Binding PsList[GetCategories]}"
SelectedIndex="0"
DisplayMemberPath="Name"
SelectedItem="{Binding DynamicPropertiesCategory}"
Text="{Binding Prop[_Category].Value}" Grid.Row="0" Grid.Column="1"
IsEnabled="{Binding IsNewEntryDialog}">
</ComboBox>
...
清單中的可用 Vault 品類 ( ItemsSource = "{Binding PsList [GetCategories] }" ) 的 PowerShell 函數會傳回 GetCategories。 在「預設實施,這就會傳回所有品類。如果只有特定品類 (例如,應使用根據文件類型),此函數以進行調整。
選取的品類從組合方塊設定 DynamicPropertiesCategory :
( SelectedItem = "{Binding DynamicPropertiesCategory}" )
按一下此處,以進一步瞭解動態性質標示。