Как связать дочерний список или массив с сеткой данных? - PullRequest
0 голосов
/ 08 ноября 2011

Я новичок в WPF и все еще пытаюсь понять аспект связывания элементов управления WPF.Позвольте мне сначала представить код, с которым я работаю, а затем я задам вопросы.

КОД

public class ScannedDocument : Csla.BusinessBase<ScannedDocument>
{
   private string _documentId = string.Empty;
   private BarcodeList _barcodeList = null;

   public string DocumentId
   {
      get { return _documentId; }
   }

   public BarcodeList Barcodes
   {
      get { return _barcodeList; }
      set 
      {
         if (_barcodeList.Equals(value))
         {
            _barcodeList = value;
            PropertyHasChanged("Barcodes");
         }
      }

   }
}

public class BarcodeList : Csla.BusinessListBase<BarcodeList, Barcode>
{
   public static BarcodeList NewBarcodeList()
   { return new BarcodeList(); }

   private BarcodeList() {}
}

public class Barcode : Csla.BusinessBase<Barcode>
{       
   public string Value
   { 
      get { return GetBarcodeValue(); }
   }

   public static Barcode NewBarcode()
   { return new Barcode(); }

   private Barcode() {}
}

XAML

<dg:DataGrid GridLinesVisibility="None" AutoGenerateColumns="False" Name="ScannedDocumentsListView">
<dg:DataGrid.Columns>
    <dg:DataGridTextColumn Header="Document Name" IsReadOnly="True" Binding="{Binding Path=DocumentId}"/>
    <dg:DataGridTextColumn Header="Index 1" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[0].Value}" />
    <dg:DataGridTextColumn Header="Index 2" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[1].Value}" />
    <dg:DataGridTextColumn Header="Index 3" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[2].Value}" />
    <dg:DataGridTextColumn Header="Index 4" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[3].Value}" />
    <dg:DataGridTextColumn Header="Index 5" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[4].Value}" />
    <dg:DataGridTextColumn Header="Index 6" Width="80" IsReadOnly="True" Binding="{Binding Path=Barcodes[5].Value}" />
</dg:DataGrid.Columns>

ПРОБЛЕМА

Когда я выполняю этот код, я могу успешно привязать DocumentId к сетке, но список штрих-кодов неКажется, не является обязательным.Я проверил, что в списке есть данные.Что я делаю не так?

1 Ответ

2 голосов
/ 08 ноября 2011

Обычный шаблон для использования в этих случаях заключается в реализации INotifyPropertyChanged для ваших объектов BarCode и представлении их в DataGridControl с помощью ObservableCollection.Затем DataGrid будет показывать один объект Barcode на строку, в каждом столбце будут отображаться открытые свойства BarCode.

Изменения либо штрих-кода, либо коллекции будут затем распространяться на DataGrid и наоборот (в зависимостисвойства DataGrid).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...