0

アプリケーションの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をオーバーライドします。

4

1 に答える 1

1

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>

このアプローチにより、カスタマイズを作成し、設定を編集できます。

于 2012-10-23T01:09:51.093 に答える