1

WPF メニュー項目のハンドラー メソッドは、ListView 内のどの項目がクリックされたかをどのように判断できますか?

編集: メニューは、ListView に設定されたコンテキスト メニューです。問題は、コンテキスト メニュー項目が選択されたときに、どの ListView 項目がクリックされたかを見つけることです。

4

3 に答える 3

2

ContextMenu.PlacementTarget をチェックアウトします。このオブジェクトは、ListViewItem が見つかるまで、ビジュアル ツリー (VisualTreeHelper.GetParent) をたどることができます。

于 2009-07-03T15:00:36.590 に答える
0

他の誰かがこの問題を抱えている場合に備えて、私は次のようなものになりました:

private void ListViewItems_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
   var frameworkElement = e.OriginalSource as FrameworkElement;

   var item = frameworkElement.DataContext as MyDataItem;

   if(null == item)
   {
      return;
   }

   // TODO: Use item here...
}
于 2009-12-08T23:15:29.907 に答える
0

各データ項目にIsSelectedプロパティにバインドされたListViewItem.IsSelectedプロパティがある場合は、データを繰り返し処理して、選択したものを見つけます。

<ListView ItemsSource="{Binding Items}">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
             <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

そしてあなたのコードで:

public ICollection<DataItem> Items
{
    get { return _items; }
}

public IEnumerable<DataItem> SelectedItems
{
    get
    {
         foreach (var item in Items)
         {
             if (item.IsSelected)
                 yield return item;
         }
    }
}

private void DoSomethingWithSelectedItems()
{
    foreach (var item in SelectedItems) ...
}
于 2009-07-03T15:09:43.510 に答える