C# 将数据绑定类内的列表数据绑定到Listview
还在学习数据绑定。。我想我已经记下来了,但是在类中绑定一个数据索引的列表时遇到了麻烦。。如果这有意义的话C# 将数据绑定类内的列表数据绑定到Listview,c#,wpf,list,listview,data-binding,C#,Wpf,List,Listview,Data Binding,还在学习数据绑定。。我想我已经记下来了,但是在类中绑定一个数据索引的列表时遇到了麻烦。。如果这有意义的话 DisplayMemberBinding="{Binding _engine} 我希望gridviewcolumn下面的部分代码只显示我在该列表中拥有的引擎的整个列表。。。因此,理想情况下,我希望覆盖toString()或其他内容,使其显示类似。。对于列表中的每个引擎,显示“\u name”属性。。但我不知道怎么做?我尝试向Engine类添加一个方法,但似乎无法通过WPF访问它。。这里有点
DisplayMemberBinding="{Binding _engine}
我希望gridviewcolumn下面的部分代码只显示我在该列表中拥有的引擎的整个列表。。。因此,理想情况下,我希望覆盖toString()或其他内容,使其显示类似。。对于列表中的每个引擎,显示“\u name”属性。。但我不知道怎么做?我尝试向Engine类添加一个方法,但似乎无法通过WPF访问它。。这里有点不知所措,如果有任何帮助,我将不胜感激
编辑以澄清我想做的事情:
到目前为止,我的listview有两列。。“名称”和“主动引擎”。。“名称”列很好。。但在“主动引擎”下。。由于listview是数据绑定到播放列表对象的播放列表集合…我想显示播放列表-->\u引擎-->\u名称下列出的所有内容。但既然引擎是一个列表。。我想显示该列表中的所有“\u 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; }
}
公共静态ObservableCollection _playlicCollection=新ObservableCollection();
公共静态ObservableCollection播放列表集合
{
获取{return\u playlicollection;}
}
公共类播放列表
{
公共字符串_name{get;set;}
公共列表_引擎{get;set;}
公共播放列表(字符串名称、列表引擎)
{
_名称=名称;
_发动机=发动机;
}
}
公共级引擎
{
公共字符串_name{get;set;}
公共字符串_ip{get;set;}
公共bool_active{get;set;}
}
如果您只想在一列中显示所有\u引擎
的\u名称
,则可以将单元格模板
设置为项控件
。这应该起作用:
<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
不确定我是否理解您想要实现的目标。当项目来自\u engine
且所选值为\u name
时,是否需要组合框
?到目前为止,我的列表视图有两列。。“名称”和“主动引擎”。。“名称”列很好。。但在“主动引擎”下。。由于listview是数据绑定到播放列表对象的播放列表集合…我想显示播放列表-->\u引擎-->\u名称下列出的所有内容。但既然引擎是一个列表。。我想显示该列表中的所有“\u name”属性。让我知道这是否有意义。首先,DisplayMemberPath不绑定属性的唯一名称。让我知道还有什么问题。我的意思是显示MemberBinding=“\u name”没有绑定。请毫不犹豫地询问是否仍有不可理解的地方。我现在就试试这个,然后再给你回复,让你知道进展如何,谢谢!!!非常感谢。在我结束这篇文章并给你评分之前,是否需要水平而不是垂直地列出引擎名称?而不是发布一个全新的问题,所以就为了这个。。。如果你没看到这没什么大不了的。会给你荣誉的,泰!检查我的最新答案。您需要更改ItemsControl.ItemsPanel
sigh不要认为我会理解数据绑定和wpf。。。。泰。。。我现在就去试试没问题。很高兴这有帮助。基本上,如果您想显示某个列表,您需要某种类型的,如果您需要能够从列表中选择项或需要更高级的布局,您可以选择其子体,如列表框
,列表视图
或数据网格