【发布时间】:2016-12-07 18:00:50
【问题描述】:
所以我用 TextBoxes/ListBoxes 等设置了几乎相同的东西,但它似乎不适用于 dataGrid..
所以我有一个包含 dataGrid 的视图索引。
我创建了一个 IndexModel 类,如下所示:
public class IndexModel : INotifyPropertyChanged
{
private ObservableCollection<Schedule> _schedules;
public IndexModel(ObservableCollection<Schedule> schedules)
{
_schedules = schedules;
}
public ObservableCollection<Schedule> Schedules
{
get { return _schedules; }
set
{
_schedules = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
然后在我的 IndexView 中创建 IndexModel。
private ObservableCollection<Schedule> _schedules;
public Index(MainController controller)
{
_controller = controller;
InitializeComponent();
_schedules = controller.DatabaseController.GetSchedules() as ObservableCollection<Schedule>;
DataContext = new IndexModel(_schedules);
Log.Info($"UI Component {componentName} loaded succesfully",componentName, Source);
}
我创建 DataContext 并在 XAML 中绑定它
ItemsSource="{Binding Path=Schedules, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"
我什至创造了一个简单的虚空。
Schedule selectedItem = (Schedule) dataGrid.SelectedItem;
selectedItem.Name = "Testing";
它更新了 ObservableCollection 但 dataGrid 没有更新...
我查看了stackoverflow之类的所有答案,但仍然无法解决我的问题..
public partial class Schedule
{
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public virtual User User { get; set; }
[StringLength(256)]
public string Comment { get; set; }
[StringLength(256)]
public string Description { get; set; }
[Required]
public Priorities Priority { get; set; }
public virtual UpdaterObject Object { get; set; }
public virtual ICollection<ScheduleAction> ScheduleAction { get; set; }
【问题讨论】: