동적 특성

동적 특성 표시 및 편집할 수 있는 특성이 지정된 Vault 범주 없이 XAML 파일을 수정합니다.

새 특성을 추가할 때 Vault 범주, 이러한 특성이 자동으로 다음 번에 Data Standard 대화상자 또는 탭이 표시됩니다.

동적 특성이 Data Standard 대화상자 및 탭

동적 특성이 표시되는 DataGrid 컨트롤 두 개의 열이 있습니다. 첫 번째 열은 읽기 전용 특성 이름을 표시합니다. 두 번째 열은 보다 복잡한 있기 때문에 다른 컨트롤을 표시하려면 서로 다른 유형 (예: ComboBox 특성에 대해 미리 정의된 값 리스트, 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 객체 등을, 이러한 부재에 사용할 수 있는 바인딩:

참고: Vault 용 Data Standard, DynamicProperties 모든 특성을 지정할 범주를 선택합니다. 반면, CAD, 매핑된 특성 반환됩니다. 이는 CAD 용 데이터 표준 직접 Vault 특성을 변경할 수 없습니다. 변경 사항이 Vault 매핑을 통해 수행됩니다.

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}")

동적 특성 레이블에 대한 자세한 내용을 보려면 여기를 클릭하십시오.