Как передать в user control текущий экземпляр класса
Как передать в user control текущий экземпляр, чтобы его использовать для привязки внутри user control (ItemCard).
Строчка <customcontrols:ItemCard></customcontrols:ItemCard> Это и есть user control (ItemCard)
MainViewModel.cs
using Organaizer.MVVM.Model;
using Organaizer.MVVM.View;
using Organaizer.MVVM.ViewModel.Base;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Input;
namespace Organaizer.MVVM.ViewModel
{
public class MainViewModel : BaseViewModel
{
private ObservableCollection<ItemInfoCard> _itemInfoCards = new ObservableCollection<ItemInfoCard>() {
new ItemInfoCard(E_CategoryGroup.dir, false),
new ItemInfoCard(E_CategoryGroup.exe, false)
};
public IEnumerable<ItemInfoCard> ItemInfoCards
{
get => _categoryGroup==E_CategoryGroup.favorite? _itemInfoCards.Where(item => item.IsFavorite == true) : _itemInfoCards.Where(item => item.CategoryGroup == _categoryGroup);
}
public void Initialize()
{
_itemInfoCards.Add(new ItemInfoCard(E_CategoryGroup.exe, true));
}
#region Commands
private ICommand _cmdSelectedGroup;
public ICommand CmdSelectedGroup => _cmdSelectedGroup = new RelayCommand<string>(SelectedGroup);
private void SelectedGroup(string value)
{
_categoryGroup = (E_CategoryGroup) Enum.Parse(typeof(E_CategoryGroup), value);
RisePropertyChanged(nameof(ItemInfoCards));
}
private ICommand _cmdAddElement;
public ICommand CmdAddElement => _cmdAddElement = new RelayCommand(AddElement);
private void AddElement(object item)
{
SelectAddType vm = new SelectAddType(this);
vm.Show();
}
private ICommand _cmdSelectFavorite;
public ICommand CmdSelectFavorite => _cmdSelectFavorite = new RelayCommand<bool>(SelectFavorite);
private void SelectFavorite(bool value)
{
MessageBox.Show(value.ToString());
}
#endregion
}
}
MainWindows.xaml
ScrollViewer Grid.Column="1" >
<ItemsControl Grid.Column="0" ItemsSource="{Binding ItemInfoCards}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Margin="20" VerticalAlignment="Top" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<customcontrols:ItemCard></customcontrols:ItemCard>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
ItemCard.xaml.cs
namespace Organaizer.UserControls
{
/// <summary>
/// Логика взаимодействия для ItemCard.xaml
/// </summary>
public partial class ItemCard : UserControl
{
public ItemCard()
{
InitializeComponent();
}
}
}
