我有两个独立的课程:
public class Floor {
private string fname;
public Floor(string name)
{
fname = name;
}
public int FName
{
set { fname = value; }
get { return fname; }
}
}
public class Building
{
List<Floor> floors;
string _bName;
public Building(string bname)
{
_bName = bname;
floors = new List<Floors>();
for(int i = 0; i < 3; i++)
{
floors.Add(new Floor("floor" + (i + 1)));
}
}
public string BName
{
set{ _bName = value; }
get{ return _bName; }
}
public List<Floor> Floors
{
set { floors = value; }
get { return floors; }
}
}
在我的XAML(MainPage.xaml)中:
<ListBox x:Name="lstBuilding" Background="White" Foreground="Black">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="10,0,0,15">
<StackPanel>
<TextBlock Text="{Binding Path=BName }" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
和我的XAML.cs(MainPage.xaml.cs)
ObservableCollection< Building > buildings = new ObservableCollection< Building>();
for(int i = 0; i < 2; i++)
{
buildings.Add(new Building("building" + (i + 1)));
}
lstBuilding.ItemsSource = buildings
以下是问题:
如何使用XAML访问Floor类中的FName? 我做的是:
<TextBlock Text="{Binding Path=Floors.FName }" />
但它不起作用。 :(
很抱歉这篇长篇文章。
答案 0 :(得分:2)
您的代码本身存在缺陷,因为您正在尝试访问Floors,这又是一个Collection / List,当您有<TextBlock Text="{Binding Path=Floors.FName }" />
时,您不清楚您所指的是哪个楼层或者您想要做什么?
如果您只想参考第一层,可以尝试<TextBlock Text="{Binding Path=Floors[0].FName }" />
但是,如果您尝试访问每个建筑物中每个楼层的数据,您需要更改xaml以使其正常工作。它叫做嵌套绑定。
<ListBox x:Name="listBuilding">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Floors}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FName}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>