1

目标 开发一个自定义控件,显示指定周的摘要数据。

传入的数据如下:

3rd May 2009        Customer A     $2000
4th May 2009        Customer A     $3900
6th May 2009        Customer B     $1900

预期的显示将是

    3rd May      4th May        5th May        6th May
   Customer A   Customer A                    Customer B
    $2000        $1900                          $1900 

如您所见,数据是基于日期的条件。

是否可以根据 WPF 中的条件对项目进行数据绑定?

即当数据源日期==当前项目日期时显示摘要

还是我应该坚持在 C# 后面编写这个逻辑?

----------------- 编辑安迪的问题 -----------------

我可以让它实现一个接口而不是一个基类。

我想要做的是让控件显示一年的日期中的 1 周,这将通过一个名为当前周的属性来设置。

然后,当传入已知数据源(参见上面的示例表)时,我希望控件中的任何日期项从数据源中提取它们的数据(如果有),如果没有,则仍然显示,但只显示日期。

数据将是网格摘要对象的列表

public class GridSummary
{
     public DateTime SummaryDate;
     public Client Customer;
     public decimal Amount;
}
4

2 回答 2

1

如果我理解正确,您希望以列表格式显示一些表格数据。它是否正确?

你对数据输入了解多少?是否保证实现接口,或从基类继承?如果是后者,那么我认为数据模板是可行的方法 - 为您希望给出的每种可能类型创建一个数据模板,并为每个设置TargetType它应该显示的类型。当您将数据绑定到控件时,WPF 将自动为集合中的每个对象选择正确的数据模板。

如果你对传入的数据一无所知,你怎么可能知道要显示什么,或者如何显示呢?看起来至少应该有一些关于传入数据必须知道的事情。

(我可能不明白你想要做什么 - 请澄清一下,我会看看我是否能提供更多帮助。)

更新

听起来您的控件的数据源将是一个GridSummary对象列表。如果是这种情况,那么我认为您可以使用CollectionViewSource作为数据源(它基本上包装了您的GridSummary对象集合),并订阅其Filter事件。对于传入的每个对象,将日期与CurrentWeek属性的周进行比较,如果日期在该周,则接受它(链接的 MSDN 页面有一个示例)。

于 2009-06-09T02:52:29.850 回答
0

你可以这样做:

if(a)
    this.DataSource = a;
else
    this.DataSource = b;

我不确定那是你的意思。

你是在做自己的渲染吗?或者你是从基本控制中建立你的控制吗?您也许可以使用嵌套控件来获得所需的内容,并且可以有条件地控制嵌套控件。

于 2009-06-02T15:34:42.463 回答