Кажется, значения My DataGrid не обновляются при изменении значений в нем.
Я пробовал:
- Установка режима на
TwoWay
- Использование
BindableCollection
(от Caliburn.Micro)
- Использование
ObservableCollection
- Использование
List
- Слияние
QuotationViewModel
с TableViewModel
- Добавление элемента в
Work
и удаление его
- Использование
x:Name="Work"
в DataGrid вместо 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
Как видно из этого gif, значение обновляется, когда я дважды щелкаю по нему, оно должно обновляться без двойного щелчка по нему. Я знаю, что привязки верны, потому что когда я обновляю значение, скажем, от Milling
до 0.20
, Total
изменится на 20%
из красного дерева.