質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

18781閲覧

ListViewのSelectionChangedイベントからCommandを呼べない

takanyu

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

イベントハンドラ

マウスのクリックなどの特定の事象(イベント)が発生した時に実行される処理のことをイベントハンドラと呼びます。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2016/01/19 05:52

C#を勉強中の者です。

画面の左側にコード、名称のみのリストをListViewで表示し、
そのListView内で選択したコードに対する詳細な情報を取得して、
画面の右側に表示するような処理を作りたいと思っています。
ということで、ListViewのSelectionChangedのタイミングでコマンドを呼びたいのですが動きません。
正確に言うとSystem.Windows.InteractivityのEventTriggerを使った場合です。
ちなみにそのコマンドはButtonからは呼べています。
何か間違っていたり、足りない事があるのかわからず困っています。
アドバイスを頂けるとありがたいです。

下記にコードを記します。
よろしくお願いします。

XAML

1<ListView Grid.Row="2" ItemsSource="{Binding Path=Results,Mode=OneWay}" 2 SelectionMode="Single" SelectedItem="{Binding Path=Result}" Name="AAA"> 3 <ListView.View> 4 <GridView> 5 <i:Interaction.Triggers> 6 <i:EventTrigger EventName="SelectionChanged"> 7 <i:InvokeCommandAction Command="{Binding Path=ShowCommand,ElementName=AAA}" /> 8 </i:EventTrigger> 9 </i:Interaction.Triggers> 10 <GridViewColumn Header="コード" Width="50" CellTemplate="{StaticResource SCode}"/> 11 <GridViewColumn Header="名称" Width="180" CellTemplate="{StaticResource SName}"/> 12 </GridView> 13 </ListView.View> 14</ListView>

C#

1private ICommand _ShowCommand; 2public ICommand ShowCommand 3{ 4 get 5 { 6 if (_ShowCommand == null) 7 { 8 _ShowCommand = new RelayCommand(ExecuteShowCommand, CanExecuteShowCommand); 9 } 10 return _ShowCommand; 11 } 12} 13private bool CanExecuteShowCommand(object x) 14{ 15 return Result != null; 16} 17 18private void ExecuteShowCommand(object x) 19{ 20 MessageBox.Show("えいっ!"); 21}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

これではどうでしょう?

XML

1<ListView Grid.Row="2" ItemsSource="{Binding Path=Results,Mode=OneWay}" 2 SelectionMode="Single" SelectedItem="{Binding Path=Result}" Name="AAA"> 3 <i:Interaction.Triggers> 4 <i:EventTrigger EventName="SelectionChanged"> 5 <i:InvokeCommandAction Command="{Binding Path=ShowCommand}" /> 6 </i:EventTrigger> 7 </i:Interaction.Triggers> 8 <ListView.View> 9 <GridView> 10 <GridViewColumn Header="コード" Width="50" CellTemplate="{StaticResource SCode}"/> 11 <GridViewColumn Header="名称" Width="180" CellTemplate="{StaticResource SName}"/> 12 </GridView> 13 </ListView.View> 14</ListView>

投稿2016/01/19 09:42

daichan

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takanyu

2016/01/19 10:00

ご指摘の通り、<i:Interaction.Triggers>を<ListView>直下の階層に移動したら動きました。 ハマってたので本当に助かりました。 ありがとうございました。
guest

0

こんにちは。

ElementName=AAAを削除したらどうなりますか?

XML

1<i:InvokeCommandAction Command="{Binding Path=ShowCommand}" />

投稿2016/01/19 08:19

daichan

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takanyu

2016/01/19 09:00

回答ありがとうございます。 ElementNameの部分を削除してみましたが、ダメでした。 他に何かあればよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問