WinRT XAML数据绑定包含列表的对象列表

WinRT XAML数据绑定包含列表的对象列表,xaml,c#,data-binding,windows-8,windows-runtime,Xaml,C#,Data Binding,Windows 8,Windows Runtime,我有一个列表,其中包含另一个列表。我想将两个Lists绑定到不同的控件(一个嵌套在另一个控件中-aListViewasGridViewItem)。但我没法让它工作 非常接近这个问题。 MSDN文档中有一篇关于这一点的文章: -可能是解决方案,但我发现很难将其应用到我的代码中。 其他文章也涉及到这个话题,但不是很好,而且作为一个新用户,我不允许在一个问题中包含两个以上的超链接 我的代码与此类似(为了清晰起见,更改为城市/餐厅场景): 型号: 公共级城市 { 字符串名称{get;set;} 列表餐厅

我有一个
列表
,其中包含另一个
列表
。我想将两个
List
s绑定到不同的控件(一个嵌套在另一个控件中-a
ListView
as
GridViewItem
)。但我没法让它工作

非常接近这个问题。
MSDN文档中有一篇关于这一点的文章:
-可能是解决方案,但我发现很难将其应用到我的代码中。
其他文章也涉及到这个话题,但不是很好,而且作为一个新用户,我不允许在一个问题中包含两个以上的超链接

我的代码与此类似(为了清晰起见,更改为城市/餐厅场景):

型号:

公共级城市
{
字符串名称{get;set;}
列表餐厅列表{get;set;}
//..也是一个具有属性参数的构造函数和一个返回名称的重写toString方法
}
公共餐厅
{
字符串名称{get;set;}
List UriList{get;set;}
//..也是一个具有属性参数的构造函数和一个返回名称的重写toString方法
}
代码隐藏(LoadState方法):

/。。获取一个城市列表(有餐馆),这是在一些模型类中创建的
此.DefaultViewModel[“Items”]=城市;
有些人设置了
DataContext
。我从MSDN教程中得到了这一点,到目前为止它仍然有效。但我不确定哪一个更好

好了,现在XAML:

我想要一个
GridView
,其中城市为
GridView项目
s。在一个
GridViewItem
中有一个
网格
,在顶行显示
城市
名称
,在下面显示一个
列表视图
列表视图
包含
餐厅
s(仅该
城市
!)。
ListViewItem
s只是显示餐厅的
名称的
文本块。
我只希望餐厅
可以点击

像这样:


DataContext=“{Binding DefaultViewModel,RelativeSource={RelativeSource Self}”
这样,只显示灰色框。将
TextBlock
的绑定更改为
Text=“{binding}”
时,至少会显示城市的
名称。我不理解,也不希望这样,因为我猜
toString
方法的重写并不意味着要以这种方式使用。在这两种情况下,
餐厅的
名称
s不会出现

而且,滚动在这个视图中不知何故被打破了,但我想这是另一个故事


那么:XAML中的数据绑定有什么问题?

数据绑定引擎需要(该链接是关于WPF的,但在WinRT中应用相同的概念):

您可以绑定到公共属性、子属性以及 任何公共语言运行库(CLR)对象的索引器

但是,如果您没有明确指定,编译器将默认处理成员,例如,在您的情况下,
private

因此,您需要将您的属性声明为
public

public class City
{
    public string Name { get; set; }
    public List<Restaurant> RestaurantList { get; set; }
}

public class Restaurant
{
    public string Name { get; set; }
    public List<Uri> UriList { get; set; }
}
公共级城市
{
公共字符串名称{get;set;}
公共列表餐厅列表{get;set;}
}
公共餐厅
{
公共字符串名称{get;set;}
公共列表UriList{get;set;}
}

欢迎加入SO!数据绑定需要公共属性:例如
公共字符串名称{get;set;}
公共列表餐厅列表{get;set;}
。这是您的样本中的“输入错误”还是问题的根源?哦,天哪!事实上就是这样!谢谢!当你回答的时候,我会相应地给你打分。