2013-07-31 48 views
1

我想顯示一個數據網格中的字符串列表,但我一直無法使它正常工作。該XAML是:如何使用字符串填充DataGrid控件?

<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; 
} 

當我預覽它,我可以看到正確的行數,但沒有數據爲標題列。還有一個爲長度生成的列,它顯示了每個字符串的正確長度。我究竟做錯了什麼?標題列{Binding trackTitle}的綁定參數是否不正確?

+4

當您將DataContext設置爲MainWindow.trackTitle時,ItemsSource =「{Binding}」將讀取「trackTitle」值。另外,'Binding =「{Binding trackTitle}」'會嘗試讀取'trackTitle.trackTitle',這顯然會失敗。查看輸出窗口中的綁定錯誤。 – PoweredByOrange

+0

謝謝!從Binding屬性中刪除trackTitle的工作! – bachkoi32

回答

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中的集合屬性的一個很好的示例。嘗試將其應用於您的情況。

祝你好運!

+0

非常感謝MVVM的例子!我想知道ViewModel部件是否在不同的文件中,或者與View文件在同一個文件中? – bachkoi32

+0

從我所看到的觀點,視圖模型和模型都通常在單獨的文件中,但我仍然將其定義爲個人偏好。如果不這樣做,它會「工作」,但它有時候會讓所有的事情都崩潰,特別是當你有很多Views,ViewModel和Models時,它們會很好。 –