Visual Studio 2015无法确定方法中的lambda参数类型Enumerable.Join.请考虑以下代码:
public class Book
{
public int AuthorId { get; set; }
public string Title { get; set; }
}
public class Author
{
public int Id { get; set; }
public string Name { get; set; }
}
public static void NoIntellisenseInEnumerableJoin()
{
IEnumerable<Book> books = null;
IEnumerable<Author> authors = null;
//Intellisense fails on both 'book => book.AuthorId' and 'author => author.Id'
var test = books.Join(authors, book => book.AuthorId, author => author.Id, …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的复合模型,由两个类组成:
Public Class ParentModelVM
Public Property Name As String
Public Property ChildModel As ChildModelVM
Public Sub New()
Name = "A Parent Model"
ChildModel = New ChildModelVM With {.Name = "A Child Model"}
End Sub
End Class
Public Class ChildModelVM
Public Property Name As String
Public Property Description As String
End Class
Run Code Online (Sandbox Code Playgroud)
两者都实现了我已经缩写的INotifyPropertyChanged.我正在尝试生成用户控件来编辑ParentModelVM:
<UserControl x:Class="EditParentModel" .../>
<UserControl.DataContext>
<Binding RelativeSource="{RelativeSource Self}" Path="ViewModel" />
</UserControl.DataContext>
<TextBox Name="NameInput" Text="{Binding Path=Name}"/>
<local:EditChildModel x:Name="ChildModelInput" ViewModel="{Binding Path=ChildModel}"/>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
ViewModel是一个ParentModelVM,它注册为DependencyProperty,默认情况下绑定双向.我有一个名为EditChildModel的类似UserControl,它具有ChildModelVM类型的ViewModel属性,也注册为DependencyProperty,默认情况下绑定双向.
这个逻辑对我来说似乎有意义:ParentModelVM有一个String,它使用TextBox控件编辑,Text控件的Text属性被绑定,它有一个ChildModelVM,使用EditChildModel控件编辑,其ViewModel属性被绑定.
ParentModelVM.Name正确绑定到其文本框,并且两个ChildViewModelVM属性正确绑定到其文本框.但是,EditParentModel.ViewModel.ChildModel 与EditChildModel.ViewModel 不是同一个对象,我无法弄清楚原因.如果我ViewModel="{Binding Path=ChildModel}"从EditParentModel …