修改后,我的DataGrid的值似乎没有更新。
我尝试过:
TwoWay
BindableCollection
(来自Caliburn.Micro)ObservableCollection
List
QuotationViewModel
与TableViewModel
合并Work
中添加项目并将其删除x:Name="Work"
代替ItemsSource TableViewModel.cs
public class TableViewModel : Screen
{
[ ... ]
public QuotationViewModel QuotationViewModel { get; set; }
public void Update()
{
NotifyOfPropertyChange(() => WoodTotal);
QuotationViewModel.Update();
}
}
TableView.xaml
<!--Total-->
<ContentControl Grid.Column="1"
cal:View.Model="{Binding Path=QuotationViewModel}"/>
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));
}
}
QuotationView.xaml
<DataGrid ItemsSource="{Binding Path=Work, Mode=TwoWay}" />
存储库:https://github.com/hizamakura/Furniture
如this gif中所示,当我双击该值时,该值将更新,它无需双击就可以更新。我知道绑定是正确的,因为当我更新Value时,例如将Milling
更改为0.20
,Total
将更改为桃花心木的20%
。
答案 0 :(得分:0)
每当我想更新它时,我就开始创建一个新的 a b c
1 1 3 6
2 2 5 9
3 3 3 8
4 4 9 15
5 5 5 12
6 6 13 21
。
SELECT substring(date_part('year', date)::varchar, 3, 2) AS year, 0 AS zero FROM listvalue;
SELCT to_char(shipped_date, 'YY'), 0 AS zero from listvalue;
上次BindableCollection
只是对同一对象进行操作的一种方法,因此不会再次设置该属性,只更改了内部的属性。即属性仍然是同一对象。
即使我显式调用public BindableCollection<ICanCalculate> Work { get; set; } = App.Config.Work;
public void Update()
{
Work.CalculateQuotations(_tableViewModel.WoodTotal);
Work = new BindableCollection<ICanCalculate>(Work);
}
也不能解决问题,但这会放置一个新对象并更新所有内容。