WPF - привязка DataGrid с элементом, который имеет объект в качестве свойства, где свойство объекта выбирается через ComC#

Место общения программистов C#
Anonymous
WPF - привязка DataGrid с элементом, который имеет объект в качестве свойства, где свойство объекта выбирается через Com

Сообщение Anonymous »

Я использую 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

Вернуться в «C#»