Я хотел бы узнать наиболее подходящий способ сделать это: у меня есть Listview в моем GameView, который связан с ObservableCollection<Adventurer>
. При двойном щелчке по ячейке мне нужно новое окно (или что-то еще, если что-то более подходящее), чтобы открыть и отобразить данные о правильном Adventurer
в соответствии с ячейкой. Пока что я не смог. Это то, что у меня есть до сих пор (это мало, но я ничего не пробовал).WPF & MVVM Light-Pass объект в новом окне
Спусковой/команда в моей ListView в GameView.xaml
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<cmd:EventToCommand Command="{Binding Mode=OneWay, Path=ShowAdvCommand}"
CommandParameter="{Binding ElementName=AdvListView,
Path=SelectedItem}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
И команда в GameViewModel.cs
ShowAdvCommand = new RelayCommand<Adventurer>(p =>
{
System.Windows.MessageBox.Show(p.Name);
});
MessageBox только там, чтобы подтвердить, что Eventtocommand работал.
Мне по существу нужен контейнер, который примет правильный Adventurer
в качестве параметра после двойного щелчка по ячейке списка и позволит мне отображать данные, относящиеся к этому экземпляру. Я также предпочел бы придерживаться чего-то MVVM-friendly.
Любые советы были бы весьма полезными.
Update: я, возможно, сделал немного прогресса:
GameViewModel:
ShowAdvCommand = new RelayCommand<Adventurer>(p =>
{
AdventurerView adv = new AdventurerView(p);
adv.Show();
});
AdventurerView:
public partial class AdventurerView : Window
{
Adventurer adv;
public AdventurerView(Adventurer adv)
{
this.adv = adv;
InitializeComponent();
}
}
Теперь мне нужно, чтобы выяснить, как сделать эту работу в XAML, привязка данных и тому подобное.
Обновление: ... и затем я понял, что это полностью противоречит MVVM. Есть ли у кого-нибудь совет?
Обновление: Помощник MVVM Light поможет мне здесь? Я занимался этим, но не получил работу.
Обновление: Этот вопрос по-прежнему в воздухе. Я пробовал подход Prism, но был некоторый конфликт между Prism и MVVM Light, который вызвал больше проблем, чем того стоило. Я открыт для любых идей, совместимых с MVVM Light и шаблоном MVVM в целом.
Обновление: Кроме того, я хотел бы сделать это таким образом, чтобы при наличии нескольких всплывающих окон могли бы существовать одновременно.
Что такое 'IEntityViewModel'? Я искал вокруг, но не нашел никакой информации об этом. –
Это не часть каких-либо фреймворков, просто интерфейс, который я использую, чтобы немного отделить представление от viewmodel. Редактирование моего вопроса для включения примера ... – Alyce