将List <string>绑定到GridViewColumn

New*_*per 1 data-binding wpf

我有GridView类似的追随者.

<Grid>
    <ListView Margin="8,44,8,50" TabIndex="57" Name="CustomFieldList">
        <ListView.View>
            <GridView AllowsColumnReorder="False">
                <GridViewColumn Header="Semester Name" Width="120" DisplayMemberBinding="{Binding FieldName}"/>
                <GridViewColumn Header="Subjects" Width="150" DisplayMemberBinding="{Binding TypeValidations}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>  
Run Code Online (Sandbox Code Playgroud)

我的班级是;

  public class DigreePrograme
  {
      public string semester{ get; set; }
      public List<string> subjects { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

我有一个观察者集合,我已将其绑定到列表中.

static ObservableCollection<DigreePrograme> digreeList = new   ObservableCollection<DigreePrograme>();
public ObservableCollection<DigreePrograme> DigreeList
{ 
    get { return digreeList }
    set { digreeList = value; OnPropertyChanged("DigreeList"); }  
}   
Run Code Online (Sandbox Code Playgroud)

FormFoad上

CustomFieldList.ItemsSource=DigreeList;  
Run Code Online (Sandbox Code Playgroud)

问题
semester属性显示完美.但Subject列表没有.它显示为收集.如何解决这个问题?

sa_*_*213 6

你可以添加一个ItemsControlDataTemplate您的GridViewColumn显示所有的Subject项目

XAML:

<Window x:Class="WpfApplication11.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="275" Width="275" x:Name="UI">
    <Grid>
        <ListView Name="CustomFieldList" ItemsSource="{Binding ElementName=UI, Path=DigreeList}" >
            <ListView.View>
                <GridView AllowsColumnReorder="False">
                    <GridViewColumn Header="Semester Name" Width="120" DisplayMemberBinding="{Binding Semester}"/>
                    <GridViewColumn Header="Subjects" Width="150" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <ItemsControl ItemsSource="{Binding Subjects}" Width="150" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

码:

public partial class MainWindow : Window 
{
    public MainWindow()
    {
        InitializeComponent();
        DigreeList.Add(new DigreePrograme { Semester = "Semester 1", Subjects = new List<string>(new string[] {"Math","Art","Engish" }) });
    }

    private ObservableCollection<DigreePrograme> digreeList = new ObservableCollection<DigreePrograme>();
    public ObservableCollection<DigreePrograme> DigreeList
    {
        get { return digreeList; }
        set { digreeList = value;}
    }   
}

public class DigreePrograme
{
    public string Semester { get; set; }
    public List<string> Subjects { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述