我的课是这样的:
public class Articolo : Screen
{
public string Code { get; set; }
public string Description { get; set; }
public decimal Cost{ get; set; }
public decimal Price{ get; set; }
public List<Ean> BarCode { get; set; }
}
和这个Ean班:
public class Ean
{
public string Code{ get; set; }
}
我的数据网格是:
<DataGrid Height="367" HorizontalAlignment="Stretch" Margin="14,52,12,0"
VerticalAlignment="Top" AutoGenerateColumns="False" x:Name="List" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Code}" Header="Codice" />
<DataGridTextColumn Binding="{Binding Description }" Header="Descrizione" />
<DataGridTextColumn Binding="{Binding Cost}" Header="Quantita" />
<DataGridTextColumn Binding="{Binding Price}" Header="Prezzo" />
<DataGridTextColumn Binding="{Binding BarCode}" Header="BarCodes" />
</DataGrid.Columns>
</DataGrid>
他是ViewModel的一部分:
[Export(typeof(IScreen))]
public class BolleViewModel : Screen
{
public List<Articolo> List { get; private set; }
public BViewModel()
{
Recover recover = new Recover();
List = recover.Import();
NotifyOfPropertyChange("List");
}
}
在BarCodes列中写入(Collection)!而不是条形码。 为什么?如何查看列中的条形码列表?感谢..
答案 0 :(得分:1)
BarCode
是List<T>
,而ToString()
的{{1}}方法本身并不显示列表的内容。
您可以做的最简单的事情可能是实施IValueConverter并在List<T>
绑定中应用此转换器。
首先,转换器看起来像这样:
BarCode
然后,您需要在视图中添加转换器实例作为资源:
public class EanListToStringConverter : IValueConverter {
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture) {
return String.Join(" ", ((List<Ean>)value).Select(ean => ean.Code));
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture) {
return NotSupportedException();
}
}
最后在你的<Grid.Resources>
<converters:EanListToStringConverter x:Key="EanListToString"/>
</Grid.Resources>
绑定中调用这个实例,如下所示:
BarCode