2009-06-02 92 views
1

目标 开发显示指定星期的摘要数据的自定义控件。WPF基于条件的数据绑定

传递的将是如下数据:

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#这背后的逻辑显示总结?

-----------------编辑Andy的问题--------------------

I可以使其实现一个接口,但不是基类。

我想要做的就是控制显示一年的日期价值的日期,这将通过称为本周的属性设置。

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

的数据将是电网汇总对象的列表

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

对不起,我应该已经更清楚了,我希望开发人员能够将任何数据源放入我的控件中,而我的控件只会在给定日期显示数据。 – Peter 2009-06-02 15:37:49

+0

数据格式应该是上面的表格,但它不起作用,对不起,我是新的。因此每个项目都显示日期,下面的客户,然后是低于该值的收费金额。 – Peter 2009-06-02 15:39:42

回答

1

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

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

如果您无法知道任何有关数据传入的信息,您怎么可能知道要显示什么内容,或者如何显示它?似乎至少应该有一些关于传入数据必须知道的事情。

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

更新

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

0

你可以这样做:

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

我不知道那是你,虽然是什么意思。

你在做自己的渲染吗?或者你是否建立了基本控制的控制?你也许可以使用嵌套控件来获得你想要的,你可以有条件地控制嵌套控件。

+0

这是在WPF中,所以基本上它将是一个带有页眉和页脚的列表控件。 – Peter 2009-06-02 16:42:10