0

我有两个单独的课程,即:

    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 }" />  

但它没有用。:(

对不起,很长的帖子。

4

1 回答 1

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>
于 2012-09-05T07:23:24.703 回答