Код: Выделить всё
Код: Выделить всё
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
Код: Выделить всё
public class MainViewModel : INotifyPropertyChanged
{
public ObservableCollection Values { get; set; }
public List Items => GetItems();
public ICommand AddCommand { get; private set; }
public ICommand DeleteCommand { get; private set; }
public MainViewModel()
{
Values = new ObservableCollection();
AddCommand = new RelayCommand(AddComboBox);
DeleteCommand = new RelayCommand(DeleteComboBox);
}
private void AddComboBox()
{
Values.Add(new DataEntry(MyEnum.None));
}
private void DeleteComboBox(DataEntry entry)
{
if (Values.Contains(entry))
{
Values.Remove(entry);
}
}
private List GetItems()
{
return Enum.GetValues().ToList();
}
public event PropertyChangedEventHandler PropertyChanged;
}
Код: Выделить всё
public enum MyEnum
{
First,
Second,
Third,
None
}
public class DataEntry
{
public MyEnum Data { get; set; }
public DataEntry(MyEnum data)
{
Data = data;
}
}
Я определил его следующим образом :
Код: Выделить всё
Код: Выделить всё
public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
}
public static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register(
nameof(SelectedItem),
typeof(object),
typeof(MyControl),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
public object SelectedItem
{
get => GetValue(SelectedItemProperty);
set => SetValue(SelectedItemProperty, value);
}
}
Код: Выделить всё
Код: Выделить всё
Unable to cast object of type 'WpfApp1.MyEnum' to type 'WpfApp1.DataEntry'
code> где эти данные хранятся и поэтому не могут быть переданы в качестве параметра команды.
Я пытался изменить свою привязку на:
Код: Выделить всё
Итак, вопрос в следующем: как правильно настроить привязку для моего пользовательского элемента управления, чтобы сохранить первоначальную функциональность?
Подробнее здесь: https://stackoverflow.com/questions/791 ... tatemplate