2012-03-16 19 views
1

私のバインディングが機能しない。私のActiveViewは、データ・コンテキストとしてListView(x:Name = "MyListView")とビュー・モデルを持っています。自体は正常に動作結合WPFデータバインディング(CommandParameterが機能しない)

<r:RibbonButton Label="Update Software" 
    LargeImageSource="/Ganymed.App.UI;component/Images/plain-update.png" 
    Command="{Binding ActiveView.DataContext.UpdateSoftwareCommand}" 
    CommandParameter="{Binding ActiveView.MyListView.SelectedItems}"/> 

コマンド:

は、私は次のRibbonButton(RibbonControlLibrary)を持っています。しかし、CommandParameterを動作させることはできません。コマンドを有効にするかどうかを決定するために、ActiveViewのListViewの選択したアイテムに沿って送信したいと思います。 CommandParameterをバインドするときに何か不足していますか? structueを明確にする

MainWindow.xaml(RibbonButtonを含有する、のDataContext = MainWindowViewModel)

MainWindowViewModel.csはアクティブビュー

アクティブビュー(のDataContext = ActiveViewViewModel、MyListViewをを含む)のプロパティを含みます

ActiveViewViewModel.csには、UpdateSoftwareCommandが含まれています。

何か助けが素晴らしいだろう。おかげ

+0

上で動作するように、コマンドの準備ができましたActiveView.ListViewの代わりにActiveView.MyListViewを実行すると、その名前が "MyListView"と表示されます。 – SvenG

+0

こんにちは、コードをコピーするときの私のせいでした。私はこの例の名前を誰かを混乱させないように変更しました。 –

+0

UpdateSoftwareCommandのコードはどのように見えますか? DelegateCommandを使用する場合、DelegateCommand バージョン – Nikolay

答えて

0

一つの可能​​性:

CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type r:RibbonButton}}, Path=SelectedItems}" 

もう一つは、あなたはそれはなく、あなたのViewModelにプロパティselectedItemsのを追加し、それを結合して、常に同期して、それを持っていると

+0

解決策が機能していません。私はListViewは、Visualツリー内のボタンの祖先ではないので、それは動作していないと思います。 –

+0

申し訳ありませんが、あなたのViewModelにバインドされているコントロールが何であれ、ancenstorとして配置するつもりです –

関連する問題