基于条件的WPF数据绑定

基于条件的WPF数据绑定,wpf,data-binding,controls,custom-controls,datasource,Wpf,Data Binding,Controls,Custom Controls,Datasource,目标 开发一个自定义控件,用于显示指定周的摘要数据 传入的数据如下所示: 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

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

传入的数据如下所示:

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中的条件对项目进行数据绑定吗

i、 e.当数据源日期==当前项目日期时显示摘要

还是我应该坚持用C#behind编写这种逻辑

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

我可以让它实现接口,但不能实现基类

我想做的是让控件显示从一年的日期算起的1周,这将通过名为current week的属性进行设置

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

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

public class GridSummary
{
     public DateTime SummaryDate;
     public Client Customer;
     public decimal Amount;
}
您可以这样做:

if(a)
    this.DataSource = a;
else
    this.DataSource = b;
但我不确定你的意思

你在做你自己的渲染吗?或者您是在基本控件之外构建控件?您可以使用嵌套控件来获取所需的内容,并且可以有条件地控制嵌套控件。

您可以执行以下操作:

if(a)
    this.DataSource = a;
else
    this.DataSource = b;
但我不确定你的意思


你在做你自己的渲染吗?或者您是在基本控件之外构建控件?您可能可以使用嵌套控件来获取所需的内容,并且可以有条件地控制嵌套控件。

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

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

如果您对输入的数据一无所知,您怎么可能知道要显示什么或如何显示它?似乎至少应该知道一些关于传入数据的事情

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

更新


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

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

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

如果您对输入的数据一无所知,您怎么可能知道要显示什么或如何显示它?似乎至少应该知道一些关于传入数据的事情

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

更新


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

对不起,我应该更清楚,我希望开发人员能够将任何数据源放入我的控件中,而我的控件只选择它显示的给定日期的数据。上面的数据格式应该是表格格式,但它不起作用,抱歉,我是新手。因此,每个项目都会显示日期,下面是客户,然后是收费金额。抱歉,我本应该更清楚,我希望开发人员能够将任何数据源放入我的控件中,我的控件只会选择它显示的给定日期的数据。上面的数据格式应该是表格格式,但不起作用,抱歉,我是新手。因此,每个项目都会显示日期,下面是客户,然后是收费金额。这在WPF中本质上是一种带有页眉和页脚的列表控件形式。这在WPF中本质上是一种带有页眉和页脚的列表控件形式。我以前发现过这一点,但不确定。我理解你的意思,我需要做一些额外的代码,因为每天都需要一个额外的过滤级别,但我理解你解释的原理。谢谢你的帮助!我以前发现过这个,但不确定。我理解你的意思,我需要做一些额外的代码,因为每天都需要一个额外的过滤级别,但我理解你解释的原理。谢谢你的帮助!