5

まず、これが質問の答えであると確信しているので、お詫びは非常に簡単です。それにもかかわらず、私はまだ答えを見つけることができないようです。

これは、WPFを使用する最初の週です。DataGrid内にある種のリストの内容を表示したいだけです。現在、ObservableCollection <>とDataGridを使用しようとしていますが、変更される可能性があります。リストをDataTemplateして表示するにはどうすればよいですか?

このリストは、Apps.xaml.csでMainWindow.xamlのデータソースとして設定されているViewModelにあります。

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    var window = new MainWindow();

    // Create the ViewModel to which 
    // the main window binds.
    var viewModel = new MainWindowViewModel();

    // Allow all controls in the window to 
    // bind to the ViewModel by setting the 
    // DataContext, which propagates down 
    // the element tree.
    window.DataContext = viewModel;

    window.Show();
}

現在のリストは次のとおりです。

    public ObservableCollection<PersonData> SearchResults { get; set; }

ただし、xamlに関しては、かなり迷っています。バインディングとItemsSourceをいじってみましたが、ここでそれらを使用する方法がわかりません。また、列に名前と名前、場所、タイトルなどのPersonDataの特定のプロパティを表示する必要があることを何らかの方法で通知する必要があるため、DataTemplateを使用する必要があると思います。どんな助けでも大歓迎です。

編集

より一般的には、ViewModelリスト、コレクション、何を持っているか、期間を単純に表示するにはどうすればよいですか?

4

2 に答える 2

12

基本的なDataGrid構文は次のようになります。

<DataGrid ItemsSource="{Binding SearchResults}"
          AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name"  Binding="{Binding FirstName}"/>
        <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" />
    </DataGrid.Columns>
</DataGrid>

にデータを表示したくない場合は、 ItemsControlDataGridを使用できます。

デフォルトでItemsControlは、すべてのアイテムがに追加され、アイテムのバインドをStackPanel使用して各アイテムが描画されます。独自のアイテムと使用するアイテムを指定することで、アイテムの表示方法を変更できます。いくつかの例については、WPFのItemsControlに関する私のブログ投稿を確認してください。TextBlock.ToString()ItemsControlItemsPanelTemplateItemTemplate

于 2012-07-06T19:55:40.327 に答える
1

ああ。事前調査の失敗は致命的です-私はINotifyPropertyChangedを実装しませんでした。ここでの方法を確認してください:http://msdn.microsoft.com/en-us/library/ms743695

于 2012-07-09T14:04:30.637 に答える