将数据绑定类内部的List绑定到Listview

本文关键字:绑定 Listview List 数据绑定 内部 | 更新日期: 2023-09-27 17:49:30

还在学习数据绑定…我以为我得到了它,但我有麻烦绑定类内的列表是databinded..如果有意义的话

DisplayMemberBinding="{Binding _engine}

我想在gridviewcolumn下的那部分代码只是显示引擎的整个列表,我在该列表…所以理想情况下,我想重写toString()或其他东西,让它显示像…对于列表中的每个引擎,显示"_name"属性。但我不知道该怎么做?我尝试添加一个方法到引擎类,但我似乎无法通过WPF访问它。这里有点笨,希望能得到帮助。

编辑以澄清我想做的事情:

作为现在我的listview有2列.."名称"answers"活动引擎".."姓名"一栏很好…但在"活跃引擎"下…因为listview绑定到一个播放列表对象的PlayListCollection…我想显示在PlayList->_engine->_name下列出的所有内容。但是由于_engine是一个列表…我想显示该列表中的所有"_name"属性。如果不明白,请告诉我

<Window Name="This" ....>
<ListView x:Name="Playlists_ListView" ItemsSource="{Binding PlayListCollection, ElementName=This}" Background="#FFC9C9C9" Margin="0,5,0,0" Visibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Disabled" FontSize="12">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding _name}" Width="150"/>
            <GridViewColumn Header="Active Engines" DisplayMemberBinding="{Binding _engine}" Width="240"/>
        </GridView>
    </ListView.View>
</ListView>
public static ObservableCollection<Playlist> _PlayListCollection = new ObservableCollection<Playlist>();
public static ObservableCollection<Playlist> PlayListCollection
{
    get { return _PlayListCollection; }
}    
public class Playlist
{
    public string _name { get; set; }
    public List<Engine> _engine { get; set; }        
    public Playlist(string name, List<Engine> engine)
    {
        _name = name;
        _engine = engine;
    }        
}
public class Engine
{
    public string _name { get; set; }
    public string _ip { get; set; }
    public bool _active { get; set; }
}

将数据绑定类内部的List绑定到Listview

如果您只想在一列中显示所有_engine中的_name,那么您可以将CellTemplate设置为ItemsControl。这应该可以工作:

<GridViewColumn Header="Active Engines">
   <GridViewColumn.CellTemplate>
      <DataTemplate>
         <ItemsControl ItemsSource="{Binding _engine}" DisplayMemberPath="_name">
            <ItemsControl.ItemsPanel>
               <ItemsPanelTemplate>
                  <StackPanel Orientation="Horizontal"/>
               </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
         </ItemsControl>
      </DataTemplate>
   </GridViewColumn.CellTemplate>
</GridViewColumn>

编辑

要显示水平堆叠的项目,您需要将ItemsPanel设置为水平StackPanel