Я использую Entity Framework 6.0 (сначала код).У меня есть 2 таблицы, которые соединены с ключами.Контекст данных правильно отображает 2 таблицы из DBSets.В настоящее время у меня есть их отображение в виде мастер - детали с 2 отдельными сетками.Когда я нажимаю на основную сетку, соответствующие подробные данные отображаются в нижней сетке.Теперь я хотел бы изменить способ отображения и отображения данных в сетке с детализацией.
Я изменил источник коллекций, но все еще не могу заставить его работать.
<Window.Resources>
<CollectionViewSource x:Key="catViewSource" d:DesignSource="d:DesignInstance {x:Type local:Cat},CreatList=True}"/>
<CollectionViewSource x:Key="catProdViewSource" Source="{Binding Prod, Source={StaticResource catViewSource}}"/>
</Window.Resources>
<Grid DataContext="{StaticResource catViewSource}" Margin="0,0,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="0" />
<RowDefinition Height="150"/>
<RowDefinition Height="220"/>
<RowDefinition Height="220"/>
<RowDefinition Height="50"/>
<RowDefinition Height="30"/>
<RowDefinition Height="200"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" >
</Grid>
<igDP:XamDataGrid x:Name="catDataGrid" Grid.Row="2" DataSource="{Binding}" RecordActivated="catDataGrid_RecordActivated">
<igDP:XamDataGrid.FieldSettings>
<igDP:FieldSettings Width="Auto" CellHeight="8" AllowRecordFiltering="True" AllowEdit="False"/>
</igDP:XamDataGrid.FieldSettings>
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False" SelectionTypeRecord="Extended" SelectionTypeCell="None" HighlightAlternateRecords="True"/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:Field Name="ID" Width="Auto" >
<igDP:Field.Settings>
<igDP:FieldSettings AllowEdit="False" CellClickAction="SelectRecord"/>
</igDP:Field.Settings>
</igDP:Field>
<igDP:Field Name="Name" Width="Auto" >
<igDP:Field.Settings>
<igDP:FieldSettings AllowEdit="False" CellClickAction="SelectRecord"/>
</igDP:Field.Settings>
</igDP:Field>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
<igDP:XamDataGrid x:Name="prodDataGrid" Grid.Row="3" DataSource="{Binding Source={StaticResource catProdViewSource}}" >
<igDP:XamDataGrid.FieldSettings>
<igDP:FieldSettings Width="Auto" CellHeight="8"/>
</igDP:XamDataGrid.FieldSettings>
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False" SelectionTypeRecord="Extended" SelectionTypeCell="None" HighlightAlternateRecords="False"/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:Field Name="ID" Width="Auto" >
<igDP:Field.Settings>
<igDP:FieldSettings AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
<igDP:UnboundField Name="ABC" Width="Auto" Binding="{Binding ABC}" >
<igDP:UnboundField.Settings>
<igDP:FieldSettings AllowEdit="True" />
</igDP:UnboundField.Settings>
</igDP:UnboundField>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
</Grid>
</Window>
// Вот код недавно запрошенного
namespace MyCode.View
{
public partial class MyCodeView : Window
{
MyCodeViewModel viewModel;
public ProductContext _context = new ProductContext();
public MyCodeView()
{
viewModel = new MyCodeViewModel();
InitializeComponent();
DataContext = viewModel;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
//some task
}
catch (Exception ex)
{
}
System.Windows.Data.CollectionViewSource catViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("catViewSource")));
_context.Categories.Where(x => x.CategoryName.Contains("P")).Load();
catViewSource.Source = _context.Categories.Local;
}
}
}
// ProductContext.cs
namespace MyCode
{
using System.Data.Entity;
public partial class ProductContext : DbContext
{
public ProductContext(): base("name=ProductContext")
{
Database.SetInitializer<ProductContext>(null);
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Product> Products { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>()
.Property(e => e.UnitPrice)
.HasPrecision(19, 4);
}
}
}