アプリケーションのXamDataGridのグローバル設定を定義したいのですが、他の開発者がすべてをオーバーライドせずに特定の設定をオーバーライドできるようにしたいと思います。以下のサンプルxaml:
<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をオーバーライドします。