gpt4 book ai didi

c# - 使用数组变量绑定(bind)对象

转载 作者:行者123 更新时间:2023-11-30 17:01:47 24 4
gpt4 key购买 nike

我知道有 100 个问题,但我还没有找到这个具体案例的答案。

我有一个看起来像这样的对象:

public string LogMessage { get; set; }
public DateTime Time { get; set; }
public string[] Params { get; set; }

我想将这个对象绑定(bind)到数据网格(每个对象都是一行,每个变量都是单元格)

我试过这样绑定(bind):

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"。

我需要知道是否有一些选项可以在绑定(bind)后操作数据。像这样的东西:

new Binding("Params").ToJson();

谢谢!

最佳答案

可能有几种方法可以做到这一点。如果您能够更改类,那么您可以简单地添加一个新属性并绑定(bind)到该属性:

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();
}
}

现在您可以像这样将转换器添加到绑定(bind)中:

Params.Binding = new Binding("Params") { Converter = new ArrayToStringConverter() };

关于c# - 使用数组变量绑定(bind)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com