Lier un objet variable tableau

voix
3

Je sais qu'il ya 100 questions à ce sujet, mais je ne l'ai pas trouvé une réponse à ce cas précis.

J'ai un objet qui ressemble à ceci:

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

et je veux lier cet objet à grille de données (chaque objet sera une rangée et chaque variable sera cellule)

J'ai essayé de lier comme ceci:

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

Mais le résultat de la Paramscolonne est bien sûr: « String [] Array ».

Je dois savoir s'il y a une possibilité de manipuler les données après la liaison. Quelque chose comme:

new Binding(Params).ToJson();

Merci!

Créé 17/12/2013 à 16:45
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
2

Il y a probablement plusieurs façons de le faire. Si vous êtes en mesure de changer la classe, alors vous pouvez simplement ajouter une nouvelle propriété et se lient à ce qui suit:

public string[] ParamsString
{ 
    get { return string.Join(", ", Params); }
}

Sinon, si vous ne pouvez pas changer la classe, vous pouvez créer un IValueConverterqui convertit le tableau dans la valeur que vous voulez. Par exemple:

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

Maintenant, vous pouvez ajouter le convertisseur à la liaison comme ceci:

Params.Binding = new Binding("Params") { Converter = new ArrayToStringConverter() };
Créé 17/12/2013 à 18:26
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more