我对WPF还不太熟悉,想知道是否有可能将WPF DataGrid直接导出为csv文件。我尝试使用反射获取所需的值,虽然在某种程度上可以工作,但我想知道是否可能通过附加属性获取显示的值,这些值不一定对应于项目源的值。以下附加属性只适用于使用静态字符串或静态资源字符串等情况。如果我尝试使用列绑定,我只会得到默认字符串为空。
public static readonly DependencyProperty ExportStringProperty =
DependencyProperty.RegisterAttached("ExportString", //name of attached property
typeof(string), //type of attached property
typeof(ExportBehaviour), //type of this owner class
new PropertyMetadata(string.Empty)); //the default value of the attached property
public static string GetExportString(DataGridColumn column)
{
return (string)column.GetValue(ExportStringProperty);
}
public static void SetExportString(DataGridColumn column, string value)
{
column.SetValue(ExportStringProperty, value);
}
有没有类似的方法可以像这样从XAML中获取绑定值:
<DataGridTextColumn Header="Name" Binding="{Binding (datagridexcel:Product.Name)}" datagridexcel:ExportBehaviour.ExportString="{Binding (datagridexcel:Product.Name)}"/>
如上所述,以上内容适用于静态类型字符串而非绑定。需要注意的是,在该情况下应避免使用项目源,我只关注数据表格和其中显示的值。
DataGridColumn
的ClipboardContentBinding
属性来解决。例如,如果列A绑定到一个复杂对象(如具有FirstName
属性的Person),则可以在列A上定义ClipboardContentBinding
为{Binding FirstName}
,以便在按下CTRL+C时复制该对象的FirstName
。据我所知 :) - Szabolcs Dézsi