我知道有100个问题,但我没有找到这个具体案例的答案。
我有一个看起来像这样的对象:
public string LogMessage { get; set; }
public DateTime Time { get; set; }
public string[] Params { get; set; }
我希望将此对象绑定到datagrid(每个对象都是一行,每个变量都是单元格)
我试图像这样绑定:
DataGridTextColumn Log = new DataGridTextColumn();
DataGridTextColumn Time = new DataGridTextColumn();
DataGridTextColumn Params = new DataGridTextColumn();
win.Table.Columns.Add(Time);
win.Table.Columns.Add(Log);
win.Table.Columns.Add(Params);
Time.Binding = new Binding("Time");
Log.Binding = new Binding("LogMessage");
Params.Binding = new Binding("Params");
但Params
列的结果当然是:“String [] Array”。
我需要知道在绑定后是否有一些操作数据的选项。类似的东西:
new Binding("Params").ToJson();
谢谢!
答案 0 :(得分:2)
可能有几种方法可以做到这一点。如果您能够更改类,那么您只需添加一个新属性并绑定到该类:
public string[] ParamsString
{
get { return string.Join(", ", Params); }
}
或者,如果您无法更改类,则可以创建一个IValueConverter
,将数组转换为您想要的值。例如:
public class ArrayToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string[] input = value as string[];
if (input != null && input.Length > 0)
return string.Join(", ", input);
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
现在您可以将转换器添加到绑定中,如下所示:
Params.Binding = new Binding("Params") { Converter = new ArrayToStringConverter() };