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绑定到不同的控件(一个嵌套在另一个控件中-aListView
asGridViewItem
)。但我没法让它工作
非常接近这个问题。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;}
。这是您的样本中的“输入错误”还是问题的根源?哦,天哪!事实上就是这样!谢谢!当你回答的时候,我会相应地给你打分。