Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据绑定类内的列表数据绑定到Listview_C#_Wpf_List_Listview_Data Binding - Fatal编程技术网

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。。。。泰。。。我现在就去试试没问题。很高兴这有帮助。基本上,如果您想显示某个列表,您需要某种类型的,如果您需要能够从列表中选择项或需要更高级的布局,您可以选择其子体,如
列表框
列表视图
数据网格