Xceed主题会覆盖所有其他样式

时间:2017-09-26 13:06:39

标签: wpf datagrid themes explicit xceed

我正在使用带有Office2007BlackTheme的xceed数据网格。我也有很多样式,我想应用于我的数据网格中的UI控件。不幸的是,主题似乎覆盖了所有内容,只要它在数据网格内部。

值得注意的是,与“ColumnManagerCell”或“DataRow”等数据网格相关的样式仍然可以按预期工作。

例如:我想将自己的样式用于滚动条,但即使样式设置为全局应用; <Style TargetType="{x:Type ScrollBar}">,它仍在数据网格中被覆盖。在网格之外它不是。

我意识到这是因为,默认情况下,主题是隐式设置的,但似乎无论如何都没有明确地设置它。

有没有办法在应用主题后显式设置ScrollBar样式(&amp; others)?也许有一种方法可以将tableflowview基于主题,这样它就不会覆盖其他样式?我环顾四周,没有找到任何解决方案。

我正在使用带有ThemePack 1-5的XFed DataGrid for WPF 6.3。 (仅限DataGrid:xceed.com/xceed-datagrid-for-wpf付费版本)

感谢任何帮助。

这是我的DataGrid代码:

    <xcdg:DataGridControl x:Name="datagrid" 
                          ItemsSource="{Binding Source={StaticResource Features}}"
                          KeyUp="DatagridKeyUp"
                          AllowDetailToggle="True" 
                          Margin="10"
                          NavigationBehavior="RowOrCell" 
                          CellEditorDisplayConditions="RowIsBeingEdited, 
                          MouseOverCell, MouseOverRow, RowIsCurrent, CellIsCurrent" 
                          EditTriggers="BeginEditCommand, ClickOnCurrentCell, 
                          SingleClick, CellIsCurrent, ActivationGesture, RowIsCurrent"
                          ItemScrollingBehavior="Immediate"
                          AutoCreateColumns="False">

        <xcdg:DataGridControl.View>
            <xcdg:TableflowView>

                <!--Remove ugly header-->
                <xcdg:TableflowView.FixedHeaders>
                    <DataTemplate>
                        <xcdg:ColumnManagerRow />
                    </DataTemplate>
                </xcdg:TableflowView.FixedHeaders>

                <!-- THEME IS SET HERE! -->
                <xcdg:TableflowView.Theme>
                    <xcdg:Office2007BlackTheme/>
                </xcdg:TableflowView.Theme>

            </xcdg:TableflowView>
        </xcdg:DataGridControl.View>

        <xcdg:DataGridControl.Resources>
            <Style TargetType="xcdg:TableViewScrollViewer">
                <Setter Property="HorizontalScrollBarVisibility" Value="Auto" />
                <Setter Property="VerticalScrollBarVisibility" Value="Auto" />
            </Style>
        </xcdg:DataGridControl.Resources>

        <xcdg:DataGridControl.Columns>
            <xcdg:Column FieldName="FeatureID" Title="FeatureID" ReadOnly="True"/>
            <xcdg:Column FieldName="Name" Title="Feature name" ReadOnly="True" />
            <xcdg:Column FieldName="Description" Title="Description" ReadOnly="True" />
            <xcdg:UnboundColumn FieldName=" " />
        </xcdg:DataGridControl.Columns>

        <xcdg:DataGridControl.DetailConfigurations>
            <xcdg:DetailConfiguration RelationName="Settings" UseDefaultHeadersFooters="False">

                <xcdg:DetailConfiguration.Headers>
                    <DataTemplate>
                        <xcdg:ColumnManagerRow />
                    </DataTemplate>
                </xcdg:DetailConfiguration.Headers>

                <xcdg:DetailConfiguration.Columns>
                    <xcdg:Column FieldName="Name" Title="Name" ReadOnly="True" />
                    <xcdg:Column FieldName="Description" Title="Description" ReadOnly="True" />
                    <xcdg:Column FieldName="EditValues" Title="Edit Values" ReadOnly="True" />
                    <xcdg:Column FieldName="EditValueVar" Title="Edit Value" Width="150" ReadOnly="False"
                                 CellContentTemplateSelector="{StaticResource SettingsDataTemplateSelector}"
                                 DisplayMemberBinding="{Binding}" />
                    <xcdg:UnboundColumn FieldName=" " />
                </xcdg:DetailConfiguration.Columns>

            </xcdg:DetailConfiguration>
        </xcdg:DataGridControl.DetailConfigurations>
    </xcdg:DataGridControl>

0 个答案:

没有答案