目标 开发一个自定义控件,显示指定周的摘要数据。
传入的数据如下:
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#编写这个逻辑吗?
-----------------编辑安迪的问题--------------------
我可以让它实现一个接口而不是基类。
我想要做的是让控件显示一年中的一周,这将通过一个名为当前周的属性来设置。
然后当传入已知的数据源(参见上面的示例表)时,我希望控件中的任何一天项目从数据源中提取数据(如果有的话),如果没有那么仍然显示但只显示日期
数据将是网格摘要对象列表
public class GridSummary
{
public DateTime SummaryDate;
public Client Customer;
public decimal Amount;
}
答案 0 :(得分:1)
如果我理解正确,您希望以列表格式显示某些表格数据。这是对的吗?
您对数据输入了解多少?是保证实现接口还是从基类继承?如果是后者,那么我认为数据模板是可行的方法 - 为您希望给出的每种可能类型创建数据模板,并为每个集合TargetType
添加它应显示的类型。将数据绑定到控件时,WPF将自动为集合中的每个对象选择正确的数据模板。
如果您对进入的数据一无所知,您怎么可能知道要显示什么或如何显示它?似乎至少应该有一些关于传入数据的事情。
(有可能我不明白你要做什么 - 请澄清,我会看看我是否可以提供更多帮助。)
<强>更新强>
听起来您的控件的数据源将是GridSummary
个对象的列表。如果是这种情况,那么我认为您可以使用CollectionViewSource作为数据源(它基本上包装了您的GridSummary
个对象的集合),并订阅其Filter事件。对于传入的每个对象,将日期与CurrentWeek
属性的周比较,如果该日期在该周内接受它(链接的MSDN页面有一个示例)。
答案 1 :(得分:0)
你可以这样做:
if(a)
this.DataSource = a;
else
this.DataSource = b;
我不确定你的意思是什么。
你在做自己的渲染吗?或者你是否正在建立基础控制的控制?您可以使用嵌套控件来获取所需内容,并且可以有条件地控制嵌套控件。