Я только начал изучать MVVM.Я сделал приложение с нуля, следуя этому MVVM-уроку (я настоятельно рекомендую его всем начинающим MVVM).По сути, я создал пару текстовых полей, в которые пользователь добавляет свои данные, кнопку для сохранения этих данных, которая впоследствии заполняет ListBox всеми сделанными записями.
Вот где я застрял: я хочу иметь возможность дважды щелкнуть элемент ListBoxItem и вызвать команду, которую я создал и добавил в мою модель представления.Я не знаю, как закончить сторону XAML, т.е. я не знаю, как привязать эту команду к ListBox (Item).
Вот XAML:
...
<ListBox
Name="EntriesListBox"
Width="228"
Height="208"
Margin="138,12,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
ItemsSource="{Binding Entries}" />
...
Вот ViewModel:
public class MainWindowViewModel : DependencyObject
{
...
public IEntriesProvider Entries
{
get { return entries; }
}
private IEntriesProvider entries;
public OpenEntryCommand OpenEntryCmd { get; set; }
public MainWindowViewModel(IEntriesProvider source)
{
this.entries = source;
...
this.OpenEntryCmd = new OpenEntryCommand(this);
}
...
}
И, наконец, вот команда OpenEntryCommand, которую я хочу выполнить, когда пользователь дважды щелкнет элементв EntriesListBox:
public class OpenEntryCommand : ICommand
{
private MainWindowViewModel viewModel;
public OpenEntryCommand(MainWindowViewModel viewModel)
{
this.viewModel = viewModel;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return parameter is Entry;
}
public void Execute(object parameter)
{
string messageFormat = "Subject: {0}\nStart: {1}\nEnd: {2}";
Entry entry = parameter as Entry;
string message = string.Format(messageFormat,
entry.Subject,
entry.StartDate.ToShortDateString(),
entry.EndDate.ToShortDateString());
MessageBox.Show(message, "Appointment");
}
}
Пожалуйста, помогите, я был бы признателен.