2016-12-01 21 views
3

私のlistviewまたはcombobox選択イベントまたはマウスクリックイベントmvvmを使用してコマンドをバインドする方法を見つけることができません。listviewまたはComboboxの選択にコマンドをバインドする方法はありますか?

<StackPanel Orientation="Horizontal" > 
    <ComboBox Name="cmbID" Width="150" Margin="10" Height="30" SelectedItem="{Binding CmbSelected,Mode=TwoWay}" DisplayMemberPath="ID" ItemsSource="{Binding MyStudent,Mode=TwoWay}"/> 
    <Button Name="btnGetDetail" Margin="10" Command="{Binding getDetails}" Content="Get Details" Height="30" Width="90"/> 
    <TextBox Name="tbName1" Width="90" Height="30" Text="{Binding ElementName=cmbID,Path= SelectedItem.Sub}"></TextBox> 
</StackPanel> 

ここでは、xamlのコマンドプロパティがボタンのように表示されません。

+0

'ComboBox'に' Command'プロパティを持たせることは、あまり論理的ではありません。何を期待していましたか?たとえば、ビヘイビアやトリガなど、WPFイベントに反応する方法はたくさんあります。 – Default

+0

hello sir 私はコンボボックスに観測可能なコレクションをバインドしています。また、SelectedItemプロパティをmy class.whatの1つのプロパティにバインドしています。私はコンボボックスから任意の値を選択するとIDを選択したID(私はIDとしてdisplaymemberpathを選択する)を言うことができますか?私はそのリストボックスの他のデータをバインドしたいので、正しくバインドできません。 http: //stackoverflow.com/questions/40904574/how-to-bind-listview-values-depends-on-combobox-selected-item/40905325#40905325 詳しくはこのスレッドをご覧ください – Sumitk

答えて

1

MVVMパターンを使用している場合、ListViewまたはComboBoxで項目を選択したときにメソッドを実行するには、SelectedItemセッターに入力するだけです。あなたの例を使用して、あなたのviewmodelにあなたは、このような性質持っている必要があります。項目を選択すると、セッターが

private object _cmbSelected; 
public object CmbSelected 
{ 
    get 
    { 
     return this._cmbSelected; 
    } 
    set 
    { 
     this._cmbSelected= value; 
     //Here you can put your method 
     NotifyPropertyChanged("CmbSelected"); 
    } 
} 

と呼ばれるが、そこにあなたが望む任意のメソッドを呼び出すことができます。この例では、適切なタイプにobjectを変更します。

+0

あなたはxamlコードを共有できますかそれ? このプロパティは既に作成済みです http://stackoverflow.com/questions/40904574/how-to-bind-listview-values-depends-on-combobox-selected-item/40905325#40905325 plz reffer this post – Sumitk

1

InvoceCommandActionは、System.Windows.Interactivityによって提供されます。ところで

<Window mlns:i="http://schemas.microsoft.com/expression/2010/interactivity"> 
... 
    <ComboBox SelectedItem="{Binding CmbSelected, Mode=TwoWay}" ItemsSource="{Binding MyStudent}"> 
     <i:Interaction.Triggers> 
      <i:EventTrigger EventName="SelectionChanged"> 
       <i:InvokeCommandAction Command="{Binding YourCommand}"/> 
      </i:EventTrigger> 
     </i:Interaction.Triggers> 
    <ComboBox/> 
... 
</Window> 

TwoWayモードにItemsSourceBindingを設定しても意味がありません。名前のとおり、ソースであり、バインドされたプロパティは決して更新されません。

関連する問題