【问题标题】:Setting DataGrid.GroupStyle in style在样式中设置 DataGrid.GroupStyle
【发布时间】:2011-09-11 16:29:20
【问题描述】:

我想在我的样式中设置 DataGrid.GroupStyle,所以它对于所有数据网格都是相互的,而不是在我的视图文件中,我需要将它分别设置到每个数据网格。 这就是我现在拥有的:

<Style  x:Key="DGView" TargetType="DataGrid">
    <Setter Property="Height" Value="Auto" />
    <Setter Property="Margin" Value="0,3,0,0" />
    <Setter Property="RowHeaderWidth" Value="0" />
    <Setter Property="SelectionMode" Value="Single" />
    <Setter Property="SelectionUnit" Value="FullRow" />
    <Setter Property="CanUserAddRows" Value="False" />
    <Setter Property="CanUserDeleteRows" Value="False" />
    <Setter Property="AutoGenerateColumns" Value="False" />
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="DataGrid.CellStyle" Value="{StaticResource DGCell}" />
</Style>

<DataGrid Style="{StaticResource DGSecondaryView}" >

    <DataGrid.GroupStyle>
        <GroupStyle ContainerStyle="{StaticResource GIView}" >
            <GroupStyle.Panel>
                <ItemsPanelTemplate>
                    <DataGridRowsPresenter/>
                </ItemsPanelTemplate>
            </GroupStyle.Panel>
        </GroupStyle>
    </DataGrid.GroupStyle>

    <DataGrid.Columns>
        <DataGridTextColumn Header="BookID" Binding="{Binding BookID}" Visibility="Collapsed"/>
        <DataGridTextColumn Header="Title" Binding="{Binding Title, Converter={StaticResource StringToOffset}}" Width="3*" IsReadOnly="True" />
        <DataGridTextColumn Header="Sequence" Binding="{Binding Sequence}" Width="3*" IsReadOnly="True" />
        <DataGridTextColumn Header="Number" Binding="{Binding Number}" Width="1*" IsReadOnly="True" CellStyle="{StaticResource  Numeric}" />
    </DataGrid.Columns>

</DataGrid>

我想要的是将以下代码插入到样式标签中。有可能吗?

<DataGrid.GroupStyle>
    <GroupStyle ContainerStyle="{StaticResource GIView}" >
        <GroupStyle.Panel>
            <ItemsPanelTemplate>
                <DataGridRowsPresenter/>
            </ItemsPanelTemplate>
        </GroupStyle.Panel>
    </GroupStyle>
</DataGrid.GroupStyle>

【问题讨论】:

    标签: wpf datagrid styles grouping


    【解决方案1】:

    我需要为 ListBox 执行此操作,因此我创建了从 ListBox 继承的新控件并添加了可绑定和可设置样式的属性。对 DataGrid 也可以这样做。

    public class MyListBox : ListBox 
    { 
        public GroupStyle DefaultGroupStyle 
        { 
            get { return (GroupStyle)GetValue(DefaultGroupStyleProperty); } 
            set { SetValue(DefaultGroupStyleProperty, value); } 
        } 
    
        // Using a DependencyProperty as the backing store for DefaultGroupStyle.  This enables animation, styling, binding, etc... 
        public static readonly DependencyProperty DefaultGroupStyleProperty = 
            DependencyProperty.Register("DefaultGroupStyle", typeof(GroupStyle), typeof(MyListBox), new UIPropertyMetadata(null, DefaultGroupStyleChanged)); 
    
        private static void DefaultGroupStyleChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) 
        { 
            ((MyListBox)o).SetDefaultGroupStyle(e.NewValue as GroupStyle); 
        } 
    
        private void SetDefaultGroupStyle(GroupStyle defaultStyle) 
        { 
            if (defaultStyle == null) 
            { 
                return; 
            } 
    
            if (this.GroupStyle.Count == 0) 
            { 
                this.GroupStyle.Add(defaultStyle); 
            } 
        } 
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多