如何自定义格式自定义数据WPF 4.5?

时间:2013-01-30 19:41:02

标签: c# wpf formatting string-formatting

我正在开发一些软件,可以根据从某些设备收集的事件数据生成报告。数据存储在数据库中。我希望用户能够模拟软件生成的报告的输出文件名。因此,当用户决定生成报告时,他们已配置的输出文件名模板将应用于从数据库检索的数据。

例如,假设每个报告都包含以下与之关联的数据模板元素:

<Name>
<Timestamp>
<Location>
<EventType>

因此,用户可以按任意顺序选择任何这些模板项,以确定输出文件名的格式。如果他们选择了这样的东西:

<Name> <EventType> <Location> <Timestamp>.pdf

让我们说这是数据库中当前报告的数据:

Name = "MyReport"
EventType = "Error"
Location = "Park Ave"
Timestamp = 1-30-2013 11.00.00 AM

生成实际报告时,报告文件名将如下所示:

"MyReport Error Park Ave 1-30-2013 11.00.00 AM.pdf"

我正在努力想出一种优雅的方式来提供自定义格式元素,例如<Name>, <Location>等......并根据数据库中的数据或可能的实体对象构建字符串。我看过ICustomFormatter和IFormatProvider,但我不确定这些是否完全适合我正在做的事情。

我正在使用WPF 4.5,我的数据将由实体框架驱动 任何想法将不胜感激!

1 个答案:

答案 0 :(得分:0)

我在问题中看到了这一点,没有人回答过。为了后代,我想记录下我做了什么。我最终使用了Regex.Replace。我使用枚举列出了不同的格式字段,如下所示:

String pattern = String.Format("<{0}>", Template.Timestamp);
String result = Regex.Replace(pattern, data.Timestamp.ToString());

其中“Template”是枚举,“Timestamp”是我想要替换的元素。它似乎适合我的需要。