Reputation: 57
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>
I want the datagrid get populated with these columns
Upvotes: 0
Views: 78
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