2011-04-18 39 views
1

我有一个类似的BindingList后续:BindingList与int数组更新列表框?

private BindingList<int[]> sortedNumbers = new BindingList<int[]>(); 

每一项都是一个INT [6],现在我想所以每次更新它的一组数字被添加到其将其绑定到一个列表框。

listBox1.DataSource = sortedNumbers; 

结果是为每个条目下面的文字:

Matriz Int32[]. 

我如何格式化输出或改变它,所以它打印每个条目的数字作为生成它们设置?

回答

1

您需要处理Format事件:

listBox1.Format += (o,e) => 
{ 
    var array = ((int[])e.ListItem).Select(i=>i.ToString()).ToArray(); 
    e.Value = string.Join(",", array); 
}; 
+0

+1有趣的不知道我有一个格式在那里,但演员似乎并没有工作的联接。 – Prix 2011-04-18 04:51:35

+0

您使用的是.NET 4.0还是使用的是早期版本? – 2011-04-18 04:53:44

+0

对不起我......我被绑在3.5 – Prix 2011-04-18 04:54:32

0

如何在ItemTemplate使用的IValueConverter?

<ListBox x:Name="List1" > 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Converter={StaticResource NumberConverter}}" /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

public class NumberConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value is int[]) 
     { 
      int[] intValues = (int[])value; 
      return String.Join(",", intValues); 
     } 
     else return Binding.DoNothing; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Convert(value, targetType, parameter, culture); 
    } 
} 
+0

我没有注意到你正在使用winform。但至少我在代码中找到另一个可观察的集合:“BindingList ” – Howard 2011-04-18 05:38:40