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

------解决方案--------------------
你需要根据你的 数字字符串长度决定列数,在后台拼接StackPanel,每一个StackPanl,包含两行,根据当前取得的数字,决定画几个圆,什么颜色的圆,循环添加到WrapPanel里。
------解决方案--------------------
根据一组数值生成下面表格图形,如第一组A121211122112 A代表单数列为蓝色,双数用红色填充圆 后面一串数值折分单个数,按下图这样排列。刚接触WPF,请各位高手多多指点。
------解决方案--------------------
你需要根据你的 数字字符串长度决定列数,在后台拼接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");
}