0

私のクラスはこれです:

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は書き込み(コレクション)です!バーコードではありません。なんで?列のバーコードのリストを表示するにはどうすればよいですか?ありがとう..

4

1 に答える 1

1

BarCodeはaList<T>であり、のToString()メソッドList<T>自体はリストの内容を表示しません。

あなたができる最も簡単なことは、おそらくIValueConverterを実装し、このコンバーターを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バインディングでこのインスタンスを呼び出します。次のようになります。

<DataGridTextColumn Binding="{Binding BarCode, 
    Converter={StaticResource EanListToString}}" Header="BarCodes" />
于 2013-03-25T19:00:26.353 に答える