I have a class that is a wrapper for memory positions of a hardware device.
I need to data-bind each of this positions, so I created a class with hardcoded properties, one for each position, so that I can bind a WPF DataGrid to it.
Problem is: given the sequential nature of the positions, the code became quite repetitive.
Model(.cs):
public class TabelaMemoria
{
public string Nome { get; private set; }
int Numero { get; set; }
MiotoolWrapper _device;
public TabelaMemoria(MiotoolWrapper deviceWrapper, string nome, int numero)
{
_device = deviceWrapper;
Nome = nome;
Numero = numero;
}
public float A1
{
get { return getVal(0); }
}
public float B1
{
get { return getVal(1); }
}
public float A2
{
get { return getVal(2); }
}
public float B2
{
get { return getVal(3); }
}
public float A3
{
get { return getVal(4); }
}
public float B3
{
get { return getVal(5); }
}
public float A4
{
get { return getVal(6); }
}
public float B4
{
get { return getVal(7); }
}
private float getVal(int p)
{
return _device.GetCalibrationValue(Numero, p);
}
}
View(.xaml):
<DataGrid
ItemsSource="{Binding Memorias}" <!-- of type IEnumerable<TabelaMemoria> -->
AutoGenerateColumns="False"
ColumnWidth="Auto">
<DataGrid.RowHeaderStyle>
<Style TargetType="DataGridRowHeader">
<Setter Property="Content" Value="{Binding Nome}"/>
</Style>
</DataGrid.RowHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="A1" Binding="{Binding A1}" Width="100"/>
<DataGridTextColumn Header="B1" Binding="{Binding B1}" Width="100"/>
<DataGridTextColumn Header="A2" Binding="{Binding A2}" Width="100"/>
<DataGridTextColumn Header="B2" Binding="{Binding B2}" Width="100"/>
<DataGridTextColumn Header="A3" Binding="{Binding A3}" Width="100"/>
<DataGridTextColumn Header="B3" Binding="{Binding B3}" Width="100"/>
<DataGridTextColumn Header="A4" Binding="{Binding A4}" Width="100"/>
<DataGridTextColumn Header="B4" Binding="{Binding B4}" Width="100"/>
</DataGrid.Columns>
</DataGrid>