【发布时间】:2011-12-04 20:45:12
【问题描述】:
需要在后面的代码中格式化 ListView GridView 中的字符串。 XAML 不是一个选项,因为数据和列是在代码中创建的。
所需日期格式的 XAML 版本是:
<TextBlock TextWrapping="NoWrap" Text="{Binding Path=DateTime, Mode=OneWay, StringFormat={}{0:yyyy/MM/dd hh:mm tt}}" />
在这种情况下,我不能使用 XAML,因为列数会有所不同,并且需要以该格式显示日期的列也会有所不同。我只是无法弄清楚如何在后面的代码中应用该日期格式。下面是构建列的工作代码。
GridViewColumn gvc;
GridViewColumnHeader gvch;
Binding gvBinding;
DataTemplate template;
FrameworkElementFactory textblock;
// Data Column
gvc = new GridViewColumn();
gvch = new GridViewColumnHeader();
gvch.Content = SF.DispName;
gvch.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch;
gvch.VerticalContentAlignment = System.Windows.VerticalAlignment.Bottom;
gvch.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
gvc.Header = gvch;
gvBinding = new Binding();
gvBinding.Mode = BindingMode.OneWay;
gvBinding.Path = new PropertyPath("[" + (sDocBaseResultDocsFieldsIndex * 2).ToString() + "]");
template = new DataTemplate();
textblock = new FrameworkElementFactory(typeof(TextBlock));
textblock.SetValue(TextBlock.TextProperty, gvBinding);
// textblock.SetValue(TextBlock.TextTrimmingProperty, TextTrimming.WordEllipsis);
template.VisualTree = new FrameworkElementFactory(typeof(Grid));
template.VisualTree.AppendChild(textblock);
gvc.CellTemplate = template;
gvSrchResultsScore.Columns.Add(gvc);
sDocBaseResultDocsFieldsIndex++;
我需要添加如下内容,但无法弄清楚。我已经尝试了所有我能想到的 {}{0:yyyy/MM/dd hh:mm tt}} 排列。
if (sDocBaseResultDocsFieldsIndex == 12) gvBinding.StringFormat = "Help";
【问题讨论】:
标签: wpf listview gridview binding string-formatting