Я использую DataGrid для представления коллекции элементов, который имеет еще один объект «ItemType» в качестве свойства. В одном из столбцов я хочу использовать ComboBox, чтобы выбрать конкретную коллекцию ItemTypes, как показано в приведенном ниже коде. /> < /p>
Я затем использую Comboboxcolumns, чтобы выбрать элемент для каждого элемента, как и ожидалось:
Как я могу сделать значения немедленно? Они не имеют значения.
mainwindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
var viewModel = new MainWindowViewModel();
this.DataContext = viewModel;
InitializeComponent();
}
}
mainwindowviewmodel.cs , item.cs , itemtype.cs
public class MainWindowViewModel
{
public MainWindowViewModel()
{
Items = new ObservableCollection
{
new Item(){ Position = 1 },
new Item(){ Position = 2 },
new Item(){ Position = 3 }
};
AvailableTypes = new ObservableCollection()
{
new ItemType(){ Name = "Type A", Height = 3, Length = 5},
new ItemType(){ Name = "Type B", Height = 2, Length = 3},
new ItemType(){ Name = "Type C", Height = 4, Length = 6},
};
}
public ObservableCollection Items { get; set; }
public ObservableCollection AvailableTypes { get; set; }
}
< /code>
public class Item : INotifyPropertyChanged
{
public Item()
{
}
private double _position;
public double Position
{
get { return _position; }
set
{
_position = value;
OnPropertyChanged();
}
}
public ItemType Type { get; set; }
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
< /code>
public class ItemType : INotifyPropertyChanged
{
public ItemType()
{
}
private string _name;
private double _length;
private double _height;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged();
}
}
public double Length
{
get { return _length; }
set
{
_length = value;
OnPropertyChanged();
}
}
public double Height
{
get { return _height; }
set
{
_height = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler? PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string? name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... object-pro