Tharaka
Tharaka

Reputation: 57

Filter Data from a ObservableCollection to populate a DataGrid

I have a ObservableCollection which contains number of variables. I want to bind this collection to a data grid but with only 3 variables.

public ObservableCollection<BlockData> BlockDatas { get; set; } = new ObservableCollection<BlockData>();

        public class BlockData
        {
            public BlockData(MaterialSystem ms)
            {
                MaterialSystem = ms;
            }

            public MaterialSystem MaterialSystem { get; set; }
            public double SigmaA { get; set; }
            public double SigmaN { get; set; }
            public double SigmaR { get; set; }
            public double SigmaMax { get; set; }
            public double SigmaMin { get; set; }
            public int NCycles { get; set; }
            public int NEquiv { get; set; }
            public int NFinal { get; set; }
            public int NTotal { get; set; }
            public int NTotalBlockCycles { get; set; }
    }

This is the datagrid which the collection bind to

<DataGrid Name="dtaStressInput"  Margin="10" Grid.Row="1" ItemsSource="{Binding BlockDatas}"  Grid.ColumnSpan="3">
                    <DataGrid.ColumnHeaderStyle>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="FontWeight"  Value="Bold" />
                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                            <Setter Property="Background" Value="DarkGray"/>
                            <Setter Property="BorderBrush" Value="#FFEEB622"/>
                            <Setter Property="BorderThickness" Value="2"/>
                        </Style>
                    </DataGrid.ColumnHeaderStyle>
                    <DataGrid.CommandBindings>
                        <CommandBinding Command="{x:Static ApplicationCommands.Paste}" Executed="DtaStressInput_Paste"/>
                    </DataGrid.CommandBindings>
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="R Ratio" Binding="{Binding MaterialSystem.R}"  Width="1*"/>

                        <DataGridTextColumn Binding="{Binding SigmaA}" Width="1*">
                            <DataGridTextColumn.Header>
                                <TextBlock>σ<Run BaselineAlignment="Subscript">a</Run></TextBlock>
                            </DataGridTextColumn.Header>
                        </DataGridTextColumn>

                        <DataGridTextColumn Binding="{Binding NCycles}" Width="1*">
                            <DataGridTextColumn.Header>
                                <TextBlock>n<Run BaselineAlignment="Subscript">i</Run></TextBlock>
                            </DataGridTextColumn.Header>
                        </DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>

This is the Grid I'm getting enter image description here

I want the datagrid get populated with these columns Data needs to get populated

Upvotes: 0

Views: 78

Answers (1)

Jeff Barnard
Jeff Barnard

Reputation: 124

You can set AutoGenerateColumns to false, everything else you have should be fine.

<DataGrid AutoGenerateColumns="False"...

https://stackoverflow.com/a/21899261/1532710

Upvotes: 2

Related Questions