Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在运行时访问ListView以更新项目_Wpf_C# 4.0 - Fatal编程技术网

Wpf 在运行时访问ListView以更新项目

Wpf 在运行时访问ListView以更新项目,wpf,c#-4.0,Wpf,C# 4.0,我必须通过单击按钮来更新ListView项。如何在运行时查找和更新一个 更新:我的意思是我必须找到特定的ListView项目,并仅更新此项目的文本。手动将ListViewItems添加到ListView时,您可以根据其内容进行查找,并使用类似此系统的新内容进行替换。Linq: object contentToReplace = ...; object newContent = ...; ListViewItem item = listView.Items.Cast<ListViewItem

我必须通过单击按钮来更新ListView项。如何在运行时查找和更新一个


更新:我的意思是我必须找到特定的ListView项目,并仅更新此项目的文本。

手动将ListViewItems添加到ListView时,您可以根据其内容进行查找,并使用类似此系统的新内容进行替换。Linq:

object contentToReplace = ...;
object newContent = ...;
ListViewItem item = listView.Items.Cast<ListViewItem>().FirstOrDefault(
    lvi => lvi.Content == contentToReplace);
if (item != null)
{
    item.Content = newContent;
}

您可以使用命令。例如:

namespace WpfApplication1
{
    public partial class MainWindow : Window
    {
        public static readonly ICommand ItemClickCommand = new RoutedCommand("ItemClick", typeof(MainWindow));

        public MainWindow()
        {
            InitializeComponent();

            this.CommandBindings.Add(
                new CommandBinding(
                    MainWindow.ItemClickCommand,
                    this.ExecuteItemClickCommand,
                    this.CanExecuteItemClickCommand));
        }

        private void CanExecuteItemClickCommand(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = e.Parameter is ListBoxItem;
        }

        private void ExecuteItemClickCommand(object sender, ExecutedRoutedEventArgs e)
        {
            // Here you can access ListBoxItem that holds a clicked button.
            ListBoxItem listBoxItem = (ListBoxItem)e.Parameter;
            listBoxItem.Content = "...";
        }
    }
}
现在,您只需要将ItemClickCommand分配给按钮,并将CommandParameter绑定到相应的ListBoxItem

XAML示例:

<Window ...
        xmlns:local="clr-namespace:WpfApplication1">
    <ListBox>
        <ListBoxItem>
            <ListBoxItem.Content>
                <Button Command="{x:Static local:MainWindow.ItemClickCommand}"
                        CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
                        Content="Click Me"/>
            </ListBoxItem.Content>
    <...>

取决于您创建项目的方式。手动添加ListViewItems或绑定到某个项目集合?我的listView中有2列。如何将newListViewItem添加到指定列?您可能应该发布一些代码和XAML。否则很难猜到你在做什么。