【问题标题】:Defining XamDataGrid properties globally, with local modification allowed全局定义 XamDataGrid 属性,允许本地修改
【发布时间】:2012-10-12 18:46:36
【问题描述】:

我想为我的应用程序定义一个 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,这是有道理的。

【问题讨论】:

    标签: infragistics styling xamdatagrid


    【解决方案1】:

    这在 XAML 中是不可能的,因为 FieldSeting 不是从 FrameworkElement 派生的,因此您不能让样式直接针对它们。当您将 FeildSetting 设置为针对 XamDataGrid 的样式以及定义 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>
    

    这种方法将允许您创建自定义并编辑任何设置。

    【讨论】:

    • 在一个完美的场景中,我想要任何可能的设置,但我也可以使用特定的设置。例如:CellClickAction。我该怎么做?
    • 我已经编辑了我的答案以包含一种可能对您有用的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2020-07-08
    • 2017-03-25
    相关资源
    最近更新 更多