我正在学习 Automapper 和 EF Core,并在尝试对基于导航属性计算的仅获取属性进行建模时偶然发现了一个问题。我有两个模型:
public class Parent
{
public int Id {get;set;}
public string Name {get;set;}
public ICollection<Child> Childs {get;set;}
public int WantedChildCount {get{return Childs?.Count(c=>c.Type!=1)??0;}
}
public class Child
{
public int Id {get;set;}
public string Name {get;set;}
public int Type {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
一个 DTO:
public class VM
{
public string Name{get;set;}
public int WantedCount{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并尝试从父级自动映射虚拟机,例如:
var c = context.Parents.Include(p => p.Childs).ProjectTo<VM>().FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
自动映射器配置如下:
Mapper.Initialize(cfg=>
cfg.CreateMap<Parent, VM>()
.ForMember(d=>d.WantedCount, o => o.MapFrom(s=>s.WantedChildCount));
Run Code Online (Sandbox Code Playgroud)
问题是生成的 VM 字段 WantedCount 未填充。在日志中我发现了消息
The Include operation …Run Code Online (Sandbox Code Playgroud) 程序员小伙伴。我正在尝试使用选项卡式界面构建我的第一个 WPF 应用程序。我决定不依赖任何 MVVM 框架,因为我才刚刚开始我的旅程。
我找到了很多教程,但无法让 WPF 为视图模型选择正确的视图。
我拥有的是 Shell 视图,底层 DataContext 带有我的“选项卡视图模型”的 ObservableCollection:
Shell.Xaml
<Controls:MetroWindow x:Class="WpfApplication1.View.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Shell" Height="327" Width="667"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:v="clr-namespace:WpfApplication1.View"
xmlns:vm="clr-namespace:WpfApplication1.ViewModel"
>
<Grid>
<TabControl ItemsSource="{Binding Pages}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayName}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.Resources>
<DataTemplate DataType="x:Type vm:FirstPageModel">
<v:FirstPageView />
</DataTemplate>
<DataTemplate DataType="x:Type vm:SecondPageModel">
<v:SecondPageView />
</DataTemplate>
</TabControl.Resources>
</TabControl>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我所拥有的 - 在 tabcontrol 的选项卡中获取我的视图。但是,无论我将 DataTemplate 放在哪里(window.resources、tabcontrol.resources 等),我都只会得到如下内容:

据我所知 - 不知何故,WPF 没有看到我的观点,但我不明白为什么。我的“视图”是简单的用户控件,如下所示:
<UserControl x:Class="WpfApplication1.View.FirstPageView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<TextBlock Text="{Binding Message}" Margin="36,131,47,127" …Run Code Online (Sandbox Code Playgroud)