如何将绑定的字符串格式设置为所有DataGridTextColumn控件?

4
这是我的一个DataGridTextColumn控件的外观:
<DataGridTextColumn x:Name="contractStartDateColumn" Header="Start Date" Binding="{Binding Path=StartDate, StringFormat={}\{0:dd/MM/yyyy\}}" />

那么如何将 StringFormat={}{0:dd/MM/yyyy} 应用于所有 DataGridTextColumn 控件,而不是单独设置每个控件?
2个回答

6
您可以创建自定义绑定类,设置 StringFormat 并使用它来绑定值:
public class CustomBinding : Binding
{
    public CustomBinding(string path) : base(path)
    {
        this.StringFormat = @"{0:dd/MM/yyyy}";
    }
}

在XAML中:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding TimeList}">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{local:CustomBinding StartDate}" />
    </DataGrid.Columns>
</DataGrid>

当我尝试这样做时,我的列是空的。 - Mike
不用在意,我的命名空间在类中缺失了。+1,谢谢。 - Mike

3
你可以将StringFormat存储在.cs文件中的常量中;然后在xaml中使用以下内容:
<DataGridTextColumn x:Name="contractStartDateColumn" Header="Start Date" Binding="{Binding Path=StartDate, StringFormat={x:static MyNamespace:MyClass.MyDateFormat}}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接