我无法找到使用listview
将命令绑定到combobox
或mvvm
选择事件或任何鼠标点击事件的方式。
<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 :(得分: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");
}
}
当选择某个项目时,会调用该setter并在那里调用您想要的任何方法。在此示例中,将object
更改为适当的类型。
答案 1 :(得分:1)
您可以使用EventTrigger
提供的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>
顺便说一句,将ItemsSource
Binding
设置为TwoWay
模式毫无意义。如名称所示,它是源,永远不会更新绑定属性。