IEditableCollectionViewAddNewItem.AddNewItem(Object) 方法

定义

将指定的对象添加到集合中。

public:
 System::Object ^ AddNewItem(System::Object ^ newItem);
public object AddNewItem(object newItem);
abstract member AddNewItem : obj -> obj
Public Function AddNewItem (newItem As Object) As Object

参数

newItem
Object

要添加到集合的对象。

返回

添加到集合的对象。

示例

以下示例调用 AddNewItem 方法将对象添加到集合。 有关完整示例,请参阅该 IEditableCollectionViewAddNewItem 类。

using System;
using System.ComponentModel;
using System.Windows;

namespace IEditableCollectionViewAddItemExample;

public partial class Window1 : Window
{
    public Window1() => InitializeComponent();

    void Button_Click(object sender, RoutedEventArgs e)
    {
        IEditableCollectionViewAddNewItem viewToAddDisparateItems =
            catalogList.Items;

        if (!viewToAddDisparateItems.CanAddNewItem)
        {
            _ = MessageBox.Show("You cannot add items to the list.");
            return;
        }

        // Create a window that prompts the user to enter a new
        // item to sell.
        AddItemWindow win = new();

        // Create an item, depending on which RadioButton is selected.
        // Radio buttons correspond to book, cd, dvd, or other.
        LibraryItem newItem = (bool)book.IsChecked
            ? new Book("Enter the book title", "Enter an Author", "Enter a Genre",
                "Enter a call number", DateTime.Now + new TimeSpan(21, 0, 0, 0))
            : (bool)cd.IsChecked
                ? new MusicCD("Enter the Album", "Enter the artist", 0, "CD.******",
                            DateTime.Now + new TimeSpan(14, 0, 0, 0))
                : (bool)dvd.IsChecked
                            ? new MovieDVD("Enter the movie title", "Enter the director",
                                        "Enter the genre", new TimeSpan(), "DVD.******",
                                        DateTime.Now + new TimeSpan(7, 0, 0, 0))
                            : new LibraryItem("Enter the title", "Enter the call number",
                                            DateTime.Now + new TimeSpan(14, 0, 0, 0));

        // Add the new item to the collection by calling
        // IEditableCollectionViewAddNewItem.AddNewItem.
        // Set the DataContext of the AddItemWindow to the
        // returned item.
        win.DataContext = viewToAddDisparateItems.AddNewItem(newItem);

        // If the user submits the new item, commit the new
        // object to the collection.  If the user cancels 
        // adding the new item, discard the new item.
        if ((bool)win.ShowDialog())
        {
            viewToAddDisparateItems.CommitNew();
        }
        else
        {
            viewToAddDisparateItems.CancelNew();
        }
    }
}
Imports System.ComponentModel
Imports System.Windows

Partial Class Window1
    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)

        Dim viewToAddDisparateItems As IEditableCollectionViewAddNewItem =
            TryCast(catalogList.Items, IEditableCollectionViewAddNewItem)

        If Not viewToAddDisparateItems.CanAddNewItem Then
            MessageBox.Show("You cannot add items to the list.")
            Exit Sub
        End If

        ' Create a window that prompts the user to enter a new 
        ' item to sell. 
        Dim win As New AddItemWindow()

        ' Create an item, depending on which RadioButton is selected. 
        ' Radio buttons correspond to book, cd, dvd, or other. 
        Dim newItem As LibraryItem

        If CBool(Book.IsChecked) Then
            newItem = New Book("Enter the book title", "Enter an Author",
                "Enter a Genre", "Enter a call number",
                DateTime.Now + New TimeSpan(21, 0, 0, 0))
        ElseIf CBool(cd.IsChecked) Then
            newItem = New MusicCD("Enter the Album", "Enter the artist",
                0, "CD.******", DateTime.Now + New TimeSpan(14, 0, 0, 0))

        ElseIf CBool(dvd.IsChecked) Then
            newItem = New MovieDVD("Enter the movie title",
                "Enter the director", "Enter the genre", New TimeSpan(),
                "DVD.******", DateTime.Now + New TimeSpan(7, 0, 0, 0))
        Else
            newItem = New LibraryItem("Enter the title",
                "Enter the call number",
                DateTime.Now + New TimeSpan(14, 0, 0, 0))
        End If

        ' Add the new item to the collection by calling 
        ' IEditableCollectionViewAddNewItem.AddNewItem. 
        ' Set the DataContext of the AddItemWindow to the 
        ' returned item. 
        win.DataContext = viewToAddDisparateItems.AddNewItem(newItem)

        ' If the user submits the new item, commit the new 
        ' object to the collection. If the user cancels 
        ' adding the new item, discard the new item. 
        If CBool(win.ShowDialog()) Then
            viewToAddDisparateItems.CommitNew()
        Else
            viewToAddDisparateItems.CancelNew()
        End If
    End Sub
End Class

注解

调用 AddNewItem 该方法时,它将开始添加事务。 应调用 CommitNewCancelNew 方法以结束添加事务。

集合视图中始终显示一个新项。 调用时 CommitNew ,应用于视图的任何筛选、排序或分组都应用于新项。

适用于