2011-01-27 19 views
2

私はこれを解決しようとして掘り下げてきましたが、まだ私のために働く解決策を見つけていません。現在ホバーオーバーされているListViewItemのインデックスを取得する方法は?

私は基本的にはを持っていて、<ItemsControl.ItemsTemplate>には<ListView>があり、多くの人の名前が表示されています。 0〜5人の名前が常にリストされます。

私がしたいのは、上に乗っているエンティティに関連する追加情報が表示されたツールチップポップアップです。ツールチップが表示しているものが正しい人物であることを確認するために、私が現在マウスオーバーしているアイテムのインデックス(または名前のようなコンテンツ)を取得するにはどうすればいいですか?

私は&は私がしたい人の名前を見つけることができますデバッグモードでエンティティ&上にマウスを移動するが、私は、送信者の詳細にダウン探索することができますたびにトリガされたリストビュー上のMouseEnterイベントを持っていますが、どのように私は入手できますかそれはコードからですか?私は私が試したすべてのものをリストアップすることで、この記事をovercomplicateしたいのですが、あなたはそれ以上の情報が必要な場合は、私に知らせてくださいません

int index = sender.GetCurrentlyHoveredOverItem(); 

:私が欲しいもの

のようなものです。

ご協力いただきありがとうございます。

答えて

0

リスト(ListView)のコレクション(ItemsControl)があり、内部リストの特定の要素に固有のヒントが必要な場合は、正しく理解できましたか?

もしそうなら、それを処理するためにListView.ItemTemplateを作成してみませんか?

+0

ありがとう。これは単純なソリューションなので、テンプレートについてもっと知る必要がありますが、それは私が望んでいたものとまったく同じです。人々の名前にバインドされたTextBlockと、TextBlockにMouseEnterイベントが設定されたListView.ItemTemplateを設定しました。マウスイベントを使用すると、現在ホバーされているアイテム(または少なくとも現在移動しているアイテム)の名前にアクセスできます。次に、その人の関連情報を取得するメソッドを実行して、次にTextBlock ToolTipをバインドします。どうもありがとう。 – iambic77

+0

喜んでそれは助け:) –

0

あなたは "CurrentlyHoveredPersonList" のように、VM内のプロパティにMVVM ...

バインドIsMouseOverを使用している場合。 OneWayToSourceを使用してください。

「HoveredPersonListViewModel」という別のVMプロパティを作成します。このプロパティには、ツールチップに必要なすべての詳細が含まれています。 CurrentlyHoveredPersonListが設定されたら、HoveredPersonListViewModelを入力し、プロパティの変更通知を発行します。オブジェクトへの実際の参照が得られるので、インデックスは必要ないかもしれませんが、もしそうであれば、IndexOf(object)を使用してビューモデルのソースリストから取得することができます。

ツールチップのDataContextHoveredPersonListViewModelとその構成コントロールを適切なプロパティにバインドします。

+0

残念ながら、IsMouseOverは読み込み専用なので、バインドできません。 'OneWayToSource'バインディングを確実に行うことは可能ですが、エラーMC3065を試してみるとこのエラーが出ます: 'IsMouseOver'プロパティは読み取り専用で、マークアップから設定できません ' –

+0

@Meleak、読み込み方法がありますViewModelへのプロパティのみ。 http://stackoverflow.com/q/1083224/87399を参照してください。 –

+0

@Joe White:はい、問題はさまざまな方法で回避できます。それは私のコメントの意味ではありませんでした。私のコメントで明らかにそれを明確にしていなかったので、それを指摘してくれてありがとうございました:)私が言ったのは、読み込み専用の "OneWayToSource" onlyプロパティ( 'IsMouseOver'のような) –

1

他の人は、ListView内のアイテムは、グローバルレベルではなく、必要に応じてItemTemplateを使用して、ツールチップを直接実装する必要があることを暗示しています。

<ListViewItem ToolTipService.ToolTip="Tooltip for this item" /> 
関連する問題