如何用字符串填充DataGrid控件?

时间:2013-07-31 23:24:57

标签: c# wpf visual-studio-2010 binding datagrid

我试图在数据网格中显示字符串列表,但我无法使其正常工作。 xaml是:

   <DataGrid x:Name="ListGrid" ItemsSource = "{Binding}" AutoGenerateColumns="True">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Title" Binding="{Binding trackTitle}"></DataGridTextColumn>
        </DataGrid.Columns>
   </DataGrid>

Welcome.xaml.cs看起来像这样,其中trackTitle是List

public Welcome()
{
    InitializeComponent();
    ListGrid.DataContext = MainWindow.trackTitle;
}

当我预览它时,我可以看到正确的行数但没有Title列的数据。还有一个为Length生成的列,它显示每个字符串的正确长度。我究竟做错了什么?标题栏{Binding trackTitle}的Binding参数不对吗?

1 个答案:

答案 0 :(得分:1)

看看这个例子:

查看

<Window x:Class="Example.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <DataGrid ItemsSource="{Binding Entries}"/>
    </StackPanel>
</Window>

查看代码隐藏

namespace Example
{
    using System.Windows;

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            DataContext = new MainWindowViewModel();
            InitializeComponent();
        }
    }
}

<强>视图模型

namespace Example
{
    using System.Collections.ObjectModel;
    using System.Windows.Controls;

    class MainWindowViewModel
    {
        public ObservableCollection<string> Entries { get; set; }

        public MainWindowViewModel()
        {
            List<string> list = new List<string>() { "Entry 1", "Entry 2", "Entry 3" };
            Entries = new ObservableCollection<string>(list);
        }
    }
}

显示如何绑定到ViewModel中的集合属性的一个很好的示例。尝试将此应用于您的情况。

祝你好运!