2012-10-22 6 views
0

내 응용 프로그램 용 XamDataGrid에 대한 전역 설정을 정의하고 싶지만 다른 개발자가 전체 설정을 재정의하지 않고 특정 설정을 재정의 할 수 있기를 바랍니다. 아래 샘플 XAML : 도면에서로컬 수정이 가능한 XamDataGrid 속성을 전역으로 정의 할 수 있습니다.

<igDP:FieldLayoutSettings x:Key="DefaultFieldLayoutSettings" 
    HighlightAlternateRecords="True" 
    FilterRecordLocation="OnTop" 
    FilterUIType="LabelIcons" 
    ReevaluateFiltersOnDataChange="True" 
    SummaryDescriptionVisibility="Visible" 
    GroupBySummaryDisplayMode="SummaryCellsAlwaysBelowDescription" 
    AllowClipboardOperations="Copy" 
    AllowRecordFixing="Top" 
    AllowAddNew="False" 
    AllowDelete="False" 
    AutoFitMode="ExtendLastField" 
    AutoGenerateFields="False" 
    HeaderPrefixAreaDisplayMode="FieldChooserButton" 
    HighlightPrimaryField="Highlight" 
    FixedFieldUIType="Button" 
    FixedRecordUIType="Button" 
    DataRecordCellAreaStyle="{StaticResource defaultDataRecordCellArea}" 
    /> 

    <igDP:FieldSettings x:Key="DefaultFieldSettings" 
    AllowRecordFiltering="True" 
    FilterClearButtonVisibility="Visible" 
    FilterStringComparisonType="CaseInsensitive" 
    FilterLabelIconDropDownType="MultiSelectExcelStyle" 
    AllowSummaries="True" 
    CellHeight="200" 
    SummaryDisplayArea="BottomFixed" 
    SummaryUIType="MultiSelectForNumericsOnly" 
    AllowEdit="False" 
    AllowFixing="Near" 
    AllowGroupBy="True" 
    AllowResize="True" 
    /> 
    <Style x:Key="DefaultXamDataGridStyle" TargetType="{x:Type igDP:XamDataGrid}"> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Theme" Value="Office2010Blue" /> 
    <Setter Property="IsNestedDataDisplayEnabled" Value="False"/> 
    <Setter Property="ClipboardCellDelimiter" Value=","/> 
    <Setter Property="ClipboardRecordSeparator" Value=";"/> 
    <Setter Property="IsUndoEnabled" Value="True"/> 
    <Setter Property="FieldLayoutSettings" Value="{StaticResource DefaultFieldLayoutSettings}"/> 
    <Setter Property="FieldSettings" Value="{StaticResource DefaultFieldSettings}"/> 
</Style>  

실제 XAML.

<igDP:XamDataGrid DataSource="{Binding Path=QueryStatuses}" Style="{StaticResource 
     DefaultXamDataGridStyle}"> 
      <igDP:XamDataGrid.FieldSettings>   
       <igDP:FieldSettings CellClickAction="SelectRecord" /> 
      </igDP:XamDataGrid.FieldSettings> 
    </igDP:XamDataGrid> 

이제 로컬 fieldSetings에 명시 적으로 정의 된 것을 무시하고 다른 전역 설정을 유지하는 방법이 있습니다. 현재 로컬 FieldSetting은 전역 fieldSettings를 오버라이드합니다.

답변

1

XAML에서는 FieldSetings이 FrameworkElement에서 파생되지 않으므로 XAML에서이를 사용할 수 없으므로 스타일을 직접 대상으로 지정할 수 없습니다. XamDataGrid를 대상으로하는 스타일로 FeildSetting을 설정하면 XamDataGrid를 정의 할 때 항상 로컬 사용자 인터페이스가 사용됩니다.

가능한 대안은 FieldSettings에서 파생 된 개체를 만들고 해당 개체의 생성자에서 원하는 설정을 설정 한 다음 그리드를 사용할 때 기본 개체가 아닌 사용자 지정 FieldSettings 개체를 사용하는 것입니다. 예를 들어 :

public class CustomFieldSettings:FieldSettings 
{ 
    public CustomFieldSettings():base() 
    { 
     this.CellClickAction = CellClickAction.SelectRecord; 
    } 
} 

은 그럼 당신은 XAML에서 이것을 사용합니다 :

<igDP:XamDataGrid x:Name="XamDataGrid1"> 
    <igDP:XamDataGrid.FieldSettings> 
     <local:CustomFieldSettings CellClickAction="EnterEditModeIfAllowed" /> 
    </igDP:XamDataGrid.FieldSettings> 
... 
</igDP:XamDataGrid> 

이 방법을 사용하면 사용자 지정을 생성하고 설정을 편집 할 수 있습니다.

+0

완벽한 시나리오에서 나는 가능한 모든 설정을 원하지만 특정 설정으로도 할 수 있습니다. 예 : CellClickAction. 내가 어떻게 할 수 있니? –

+0

나는 당신을 위해 일할지도 모른다 접근을 포함하기 위하여 나의 응답을 편집했다. – alhalama

+0

감사합니다. –

관련 문제