修改其中的值时,我的 DataGrid 的值似乎没有更新。
我努力了:
- 将模式设置为
TwoWay
- 使用
BindableCollection
(来自 Caliburn.Micro) - 使用
ObservableCollection
- 用一个
List
- 合并
QuotationViewModel
_TableViewModel
- 添加
Work
和删除项目 x:Name="Work"
在 DataGrid 中使用而不是 ItemsSource
表视图模型.cs
public class TableViewModel : Screen
{
[ ... ]
public QuotationViewModel QuotationViewModel { get; set; }
public void Update()
{
NotifyOfPropertyChange(() => WoodTotal);
QuotationViewModel.Update();
}
}
表视图.xaml
<!--Total-->
<ContentControl Grid.Column="1"
cal:View.Model="{Binding Path=QuotationViewModel}"/>
报价视图模型.cs
public class QuotationViewModel : INotifyPropertyChanged
{
private readonly TableViewModel _tableViewModel;
public QuotationViewModel(TableViewModel tableViewModel)
{
_tableViewModel = tableViewModel;
}
public BindableCollection<ICanCalculate> Work { get; set; } = App.Config.Work;
public void Update()
{
QuotationRow.CalculateQuotations(_tableViewModel.WoodTotal);
OnPropertyChanged(nameof(Work));
}
}
报价单视图.xaml
<DataGrid ItemsSource="{Binding Path=Work, Mode=TwoWay}" />
存储库:https ://github.com/hizamakura/Furniture
从这个gif 中可以看出,当我双击它时,值会更新,它应该更新而无需双击它。我知道绑定是正确的,因为当我更新 Value 时,比如Milling
to 0.20
,Total
将会更改为20%
Mahogany。