Я столкнулся с проблемой, когда IList привязан к сетке данных.
Структура класса,
public class Customer
{
public virtual int CustomerID { get; set; }
public virtual string Name { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual string AddressLine3 { get; set; }
public virtual bool IsActive { get; set; }
public virtual SalesLine SalesLine { get; set; }
public virtual int Precedence { get; set; }
}
public class SalesLine
{
public virtual int SalesLineID { get; set; }
public virtual string Name { get; set; }
public virtual SalesPerson SalesPerson { get; set; }
public virtual IList<Customer> Customers { get; set; }
}
Я создаю новый IList класса Customer.
IList<Customer> customerList = new IList<Customer>();
Затем заполняется "customerList".
Поскольку у клиента есть SalesLine, IList «salesLines» заполняется всеми строками в базе данных.
Теперь, следуя XAML, я собираюсь связать customerList с сеткой данных,
<DataGrid AutoGenerateColumns="False" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch"
Name="grdCustomers" VerticalAlignment="Stretch" Grid.ColumnSpan="2"
ItemsSource="{Binding CustomerList}" CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="250" />
<DataGridTextColumn Header="Address Street" Binding="{Binding AddressLine1}" Width="150" />
<DataGridTextColumn Header="Address Town" Binding="{Binding AddressLine2}" Width="150" />
<DataGridTextColumn Header="Address Area" Binding="{Binding AddressLine3}" Width="150" />
<DataGridCheckBoxColumn Header="Is Active" Binding="{Binding IsActive}" Width="75" />
<DataGridComboBoxColumn Header="Sales Line" Width="150"
SelectedItemBinding="{Binding SalesLine}"
SelectedValuePath="SalesLineID"
DisplayMemberPath="Name">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.SalesLineList}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.SalesLineList}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
Теперь корректно отображаются все столбцы, кроме столбца строки продаж.
Несмотря на то, что я связал SalesLine со столбцом, он не отображает имя строки текущей строки в сетке. Однако, когда я нажимаю на раскрывающееся окно, раскрывающееся окно заполняется.
Помогите, пожалуйста, отобразить название строки продажи в столбце строки продажи.