刚接触WPF 请指点一下这个表如何做比较好

刚接触WPF 请各位高手指点一下这个表怎么做比较好
根据一组数值生成下面表格图形,如第一组A121211122112   A代表单数列为蓝色,双数用红色填充圆 后面一串数值折分单个数,按下图这样排列。刚接触WPF,请各位高手多多指点。


刚接触WPF 请指点一下这个表如何做比较好
------解决方案--------------------
引用:
列数不固定的。在80列以内。

你需要根据你的 数字字符串长度决定列数,在后台拼接StackPanel,每一个StackPanl,包含两行,根据当前取得的数字,决定画几个圆,什么颜色的圆,循环添加到WrapPanel里。
------解决方案--------------------
void Draw(Panel container, string data)
{
    var pref = data[0];     //A或者B,表示单数列是红色还是蓝色
    var grd = new Grid { Height = 60, ShowGridLines = true };
    container.Children.Add(grd);
    grd.RowDefinitions.Add(new RowDefinition());
    grd.RowDefinitions.Add(new RowDefinition());
    for (var i = 1; i < data.Length; i++)
        Draw(grd, i - 1, data[i], pref);
}

private void Draw(Grid grd, int column, char data, char pref)
{
    grd.ColumnDefinitions.Add(new ColumnDefinition());
    SolidColorBrush brush = GetColor(column, pref);
    InsertEllipse(grd, column, 0, brush);
    if (data == '2')
        InsertEllipse(grd, column, 1, brush);
}

private static void InsertEllipse(Grid grd, int column, int row, SolidColorBrush brush)
{
    var c = new Ellipse { Fill = brush, Width = 16, Height = 16 };
    c.SetValue(Grid.ColumnProperty, column);
    c.SetValue(Grid.RowProperty, row);
    grd.Children.Add(c);
}

private SolidColorBrush GetColor(int column, char pref)
{
    if ((column % 2 == 1 && pref == 'A') 
------解决方案--------------------
 (column % 2 == 0 && pref == 'B'))
        return new SolidColorBrush(Colors.Red);
    else
        return new SolidColorBrush(Colors.Blue);
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    Draw(this.layout, "A121221122112");
}