Wpf 在运行时访问ListView以更新项目
我必须通过单击按钮来更新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项目,并仅更新此项目的文本。手动将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。否则很难猜到你在做什么。