У меня есть экран со списком элементов, на котором пользователь может нажать кнопку, чтобы удалить соответствующий элемент из списка.
Я пытаюсь сделать это с помощью MVVM.
Но элемент не знает о содержащем списке, когда получает действие.
Я видел некоторые ответы здесь и там, но ни один из них не использовал готовые функции MVVM, которые есть в моей среде
Например, тот, который использует PRISM (не знаю, должен ли я использовать это тоже, это стандарт?):
Вот XAML:
<ListView ItemsSource="{Binding MyItemList}" SelectionMode="None" ScrollViewer.VerticalScrollMode="Disabled" ItemContainerTransitions="{x:Null}">
<ListView.ItemTemplate>
<DataTemplate >
<Grid Grid.Row="1" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding ItemClass.Property01, Mode=TwoWay}" />
<Button Grid.Column="1" Command="{Binding RemoveItemCommand}" >
<SymbolIcon Symbol="Cancel" />
</Button>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
А вот список ModelView:
private static ObservableCollection<ItemClass> _MyItemList = new ObservableCollection<ItemClass> {
new ItemClass{ Property01 = "Sometext" }
};
public ObservableCollection<ItemClass> MyItemList { get { return _MyItemList; } }
И я хочу иметь возможность выполнить следующее (на примере кода из основного представления модели я мог бы создать представление модели элемента при необходимости для решения):
public IMvxCommand RemoveItemCommand { get; private set; }
public MyViewModel(IUserDialogs dialogs)
{
RemoveItemCommand = new MvxCommand(RemoveItem);
}
public void RemoveItem(object theItem) { MyItemList.Remove(theItem); }