我目前正在调查 ComponentOne 的 FlexGrid 是否适合我的需求,但我遇到了一个我无法解决的问题。
我的目标是在列数未知的行中显示(以及后来:编辑)数据。假设这是我的模型:
public class writtenTests
{
public Student student { get; set; }
public List<test> tests { get; set;}
}
如您所见,每个学生可能参加了零到 n 次测试,其中每个测试都由属性“NumberInCourse”标识。虽然大多数学生将参加相同数量的考试,但有些学生可能会忽略某项考试。
是否有可能(如果是的话:如何做到)将所有这些收集writtenTests
到 ObservableCollection 中并让 C1FlexGrid 确定一个学生参加了多少次测试?
结果表应该看起来像
Student Name | Test 1 | Test 2 | Test 3 | ...
-----------------------------------------------------------
Name1 | 80% | 60% | 66% | ...
Name2 | 80% | n.a. | 66% | ...
Name3 | 80% | 60% | 66% | ...
等等。
如果 C1FlexGrid 无法做到这一点(我担心):有人可以提出替代方法来解决这个问题吗?我想避免硬编码给定(并且隐含地:最大)数量的测试。
提前谢谢了
阿德里安
编辑1:
用户 3wic 让我发布 xaml 初始化,所以这里是:
xaml 看起来很正常,就像任何人都会初始化 FlexGrid:
<c1:C1FlexGrid x:Name="c1FlexGrid1" Grid.Row="1"
AutoGenerateColumns="False"
ShowOutlineBar="True"
SelectionMode="CellRange"
AllowMerging="All"
BorderThickness="1">
<c1:C1FlexGrid.Columns>
<c1:Column Binding="{Binding Path=student.Nachname}" Width="180"/>
<c1:Column Binding="{Binding Path=student.Vorname}" Width="120"/>
</c1:C1FlexGrid.Columns>
</c1:C1FlexGrid>
在代码隐藏中,我将数据源设置为 flexgrid
ObservableCollection<writtenTests> data = dbMethods.getWrittenTests(selectedCourse);
c1FlexGrid1.ItemsSource = new C1.Xaml.C1CollectionView(data);
这里的问题是我不能添加另一个绑定,比如
<c1:Column Binding="{Binding Path=tests}" />
因为(也使用设置AutoGenerateColumns=true
)只生成一列包含该List.toString()
方法的结果。
我认为这些困难的原因是 C1FlexGrid 被设计成将一行作为一个具有给定(和硬编码)属性数量的对象。