项目添加到ListView时触发事件?

boy*_*001 5 wpf

我有这个XAML:

<ListView Name="NameListView"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch"
          Grid.Column="1">
    <ListView.View>
        <GridView>
            <GridViewColumn>
                <GridViewColumn.DisplayMemberBinding>
                    <MultiBinding StringFormat="{}{0} {1}">
                        <Binding Path="First" />
                        <Binding Path="Last" />
                    </MultiBinding>
                </GridViewColumn.DisplayMemberBinding>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

以及ObservableCollection<Name>在我的代码隐藏中绑定到ListView的一个名为"names"的名称.将新名称添加到集合时,我希望ListView更改新添加名称的背景颜色.我该怎么做呢?

Mat*_*est 15

您可以在listbox.Items属性上订阅ItemsChanged事件.这有点棘手,因为你必须先抛出它.订阅的代码如下所示:

((INotifyCollectionChanged)MainListBox.Items).CollectionChanged +=  ListBox_CollectionChanged;
Run Code Online (Sandbox Code Playgroud)

然后在那个事件中,您可以使用以下代码访问您的项目:

private void ListBox_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
    {
        if (e.NewItems.Count > 0)
        {
            Dispatcher.BeginInvoke(() =>
            {
                var newListItem = MainListBox.ItemContainerGenerator.ContainerFromItem(e.NewItems[0]) as Control;
                if (newListItem != null)
                {
                    newListItem.Background = System.Windows.Media.Brushes.Red;
                }
            }, DispatcherPriority.SystemIdle);
        }
    }
Run Code Online (Sandbox Code Playgroud)