首页 > 解决方案 > 每个组的 WPF 数据网格绑定属性

问题描述

我有一个这样的数据网格:

<DataGrid x:Name="MeasureDataGrid" CanUserAddRows="False" AutoGenerateColumns="False" IsReadOnly="True">
                <DataGrid.GroupStyle>
                    <GroupStyle>
                        <GroupStyle.ContainerStyle>
                            <Style TargetType="{x:Type GroupItem}">
                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate TargetType="{x:Type GroupItem}">
                                            <Expander x:Name="Expander" IsExpanded="True" Background="DarkBlue">
                                                <Expander.Header>
                                                    <StackPanel Orientation="Horizontal">
                                                        <TextBlock Text="{Binding Name}" Foreground="AntiqueWhite"/>
                                                        <TextBlock Text="{Binding ItemCount, StringFormat=Count: {0}}" Margin="30,0,0,0" Foreground="AntiqueWhite"/>
                                                    </StackPanel>
                                                </Expander.Header>
                                                <StackPanel>
                                                    <ItemsPresenter />
                                                </StackPanel>
                                            </Expander>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </GroupStyle.ContainerStyle>
                    </GroupStyle>
                    <GroupStyle>
                        <GroupStyle.HeaderTemplate>
                            <DataTemplate>
                                <DockPanel Background="LightBlue">
                                    <TextBlock Text="{Binding Name}" Foreground="Blue" Margin="30,0,0,0" Width="100"/>
                                    <TextBlock Text="{Binding Path=ItemCount}" Foreground="Blue"/>
                                </DockPanel>
                            </DataTemplate>
                        </GroupStyle.HeaderTemplate>
                    </GroupStyle>
                </DataGrid.GroupStyle>

                <DataGrid.Columns>
                    <DataGridTextColumn Header="ID" Binding="{Binding Id}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Main Emotion" Binding="{Binding MainEmotion}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Main Type" Binding="{Binding MainType}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Tempo" Binding="{Binding MeasureParameterModel.Tempo}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Key" Binding="{Binding MeasureParameterModel.Key}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Accidental" Binding="{Binding MeasureParameterModel.Accidental}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Mode" Binding="{Binding MeasureParameterModel.Mode}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Trend" Binding="{Binding MeasureParameterModel.Trend}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Beats" Binding="{Binding MeasureParameterModel.Beats}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Beat Type" Binding="{Binding MeasureParameterModel.BeatType}"></DataGridTextColumn>
                    <DataGridTextColumn Header="First Note" Binding="{Binding Measure[0].Note[0].Pitch.Step}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Alter" Binding="{Binding Measure[0].Note[0].Pitch.Alter}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Octave" Binding="{Binding Measure[0].Note[0].Pitch.Octave}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Measure Count" Binding="{Binding Measure.Count}"></DataGridTextColumn>
                    <DataGridTextColumn Header="Instrument" Binding="{Binding MeasureParameterModel.Instrument}"></DataGridTextColumn>
                </DataGrid.Columns>
            </DataGrid>

我想在扩展器标题中将每个组 Beats*BeatType 值作为文本块查看。Beats 和 BeatType 值是数据网格的一列,作为示例,我将 Beats 值绑定如下:

{Binding MeasureParameterModel.Beats}

如何在 Expander 中的文本块上绑定 Beats*BeatType 值?

编辑:我使用转换器生成要在数据网格组中显示的值。我将此转换器示例用作模板: WPF DataGrid Grouping with sums and other fields

标签: wpfdata-bindingdatagrid

解决方案


推荐阅读