Dynamické vlastnosti umožňují zobrazit a upravit vlastnosti, které jsou přiřazeny do kategorie úložiště, aniž by bylo nutné upravit soubor XAML.
Při přidání nové vlastnosti do kategorie úložiště, tyto vlastnosti se zobrazí automaticky při další dialog Data Standard nebo karta je na obrázku.
Dynamické vlastnosti jsou reprezentovány XAML třídy DataGrid řídí, který má dva sloupce. První sloupec je pouze pro čtení a zobrazuje název vlastnosti. Druhý sloupec je složitější, protože má pro zobrazení různých ovládací prvky pro různé typy (například Pole se seznamem pro vlastnosti pomocí předdefinovaného seznamu hodnot, DataPicker pro vlastnosti typu datum).
třídy DataGrid řízení
Chcete-li přidat dynamické vlastnosti řídí do dialogu, jsou zapotřebí následující řádky:
... <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> ...
Druhý sloupec používá styl ( cellStyle = " {StaticResourceDynamicDataGridCellStyle} ), která má být přidána také do souboru XAML v zdroje příčného řezu. Toto se postará všechny ovládací prvky:
... <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 svázání DynamicProperties
Podívejte se na tento řádek kódu v předchozím příkladu:
ItemsSource = " {Binding DynamicProperties} "
Tento kód zobrazí seznam iVlastností prvky, které jsou přiřazeny do kategorie. iVlastností objekt má, mimo jiné, tyto prvky, které mohou být použity v vazby:
XAML svázání DynamicPropertiesCategory
V pořadí, které DynamicProperties Svázání vrací něco, kategorie úložiště musí být určen jako první. V dialogu Výchozí implementaci, která se dodává s nástrojem Data Standard, DynamicPropertiesCategory zobrazí určeny pomocí rozevíracího seznamu:
... <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> ...
Seznam dostupných kategorií úložiště ( ItemsSource = "{Binding PsList [GetCategories] }" ) je vrácené funkcí prostředí PowerShell GetCategories. V dialogu Výchozí implementace, tato pouze vrátí všechny kategorie. Pokud pouze určité kategorie by měly být k dispozici (například na základě typu dokumentu), tato funkce má být upravena.
Vybranou kategorii z rozevíracího seznamu nastaví DynamicPropertiesCategory:
( SelectedItem = "{Binding DynamicPropertiesCategory}" )
Kliknutím zde získáte další informace o popiscích dynamických vlastností.