2012-04-01 22 views
0

ボタンをクリックすると、リストビューアイテムを更新する必要があります。実行時に見つけて更新するにはどうすればよいですか?実行時にリストビューにアクセスしてアイテムを更新する

更新:特定のListViewアイテムを見つけて、このアイテムのテキストのみを更新する必要があります。

+0

は、あなたのアイテムを作成した方法によって異なります。 ListViewItemsを手動で追加したり、アイテムコレクションにバインドしたりしましたか? – Clemens

+0

私はそれらを手動で追加しました。 –

答えて

1

ListViewItemsを手動でリストビューに追加されたとき、あなたはその内容によってそれらを見て、(System.Linqのを使用して)このような新しいコンテンツで置き換えることができます。

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

listViewに2つの列があります。 newListViewItemを指定した列に追加するにはどうすればよいですか? –

+0

おそらくコードとXAMLを投稿するべきです。それ以外の場合は、あなたがしていることを推測することは本当に難しいです。 – Clemens

0

あなたはコマンドを使用することができます。たとえば:今すぐ

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を割り当て、ListBoxItemを対応するCommandParameterをバインドすることです。

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> 
    <...> 
関連する問題