Ich baue meine erste MVVM-Anwendung in WPF. In diesem Moment versuche ich ein Ereignis durch einen Doppelklick auf ein Element in einer Listbox auszulösen. Dieses Ereignis wird von der Ansicht behandelt, wie unten im Code gezeigt.MVVM Ereignis zu ViewModel anzeigen
Jetzt möchte ich das ViewModel den Index des Elements in der Listbox senden, die doppelt geklickt wird. Wie mache ich das?
PS: die classobject und die ClassDiagram sind beide benutzerdefinierte Klassen, haben sie beide das gleiche Attribut "Name"
Ansicht
public partial class ProjectView : UserControl
{
public ProjectView()
{
InitializeComponent();
this.DataContext = new ProjectViewModel();
}
public void listBoxProject_MouseDoubleClick(object sender,MouseButtonEventArgs e)
{
MessageBox.Show(listBoxProject.SelectedIndex.ToString()); //Send index to ViewModel
}
}
XAML
<ListBox x:Name="listBoxProject" ItemsSource="{Binding CollectionList}" HorizontalAlignment="Stretch" Margin="-1,32,-1,-1" VerticalAlignment="Stretch" Width="auto" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<EventSetter Event="MouseDoubleClick" Handler="listBoxProject_MouseDoubleClick"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Ansichtsmodell
namespace VITUMLEditor.ViewModels
{
public class ProjectViewModel:BaseViewModel
{
private readonly CompositeCollection collectionList = new CompositeCollection();
public ICommand AddClassCommand
{
get { return new DelegateCommand(AddClass); }
}
public ICommand AddClassDiagramCommand
{
get { return new DelegateCommand(AddClassDiagram); }
}
private void AddClass()
{
collectionList.Add(new ClassObject("Class" + ClassObject.Key, VisibilityEnum.Public));
}
private void AddClassDiagram()
{
collectionList.Add(new ClassDiagram("ClassDiagram" + ClassDiagram.Key));
}
public CompositeCollection CollectionList
{
get { return collectionList; }
}
}
}
hier Versuchen http://stackoverflow.com/questions/14025530/ how-to-bind-mausdouble-click-command-in-mvvm –