修改其中的值时,我的 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 时,比如Millingto 0.20,Total将会更改为20%Mahogany。