我遇到了一个小问题,我试图将 DataGrid 的 DataTextColumn 绑定(bind)到计算字段。

WPF

<DataGrid ItemsSource="{Binding Path=CurrentRoster, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          AutoGenerateColumns="False"
          AlternatingRowBackground="Gainsboro"
          AlternationCount="2">
    <DataGrid.Columns>
    <DataGridComboBoxColumn Header="Student Enrolled"
                            ItemsSource="{Binding Source={StaticResource AvailableStudents}}"
                            SelectedItemBinding="{Binding Path=Student}">
    </DataGridComboBoxColumn>
    <DataGridTextColumn Header="Registration" Binding="{Binding Path=RegistrationCosts, StringFormat='{}{0:C}'}"/>
    <DataGridTextColumn Header="Lodging" Binding="{Binding Path=LodgingCosts, StringFormat='{}{0:C}'}"/>
    <DataGridTextColumn Header="Travel" Binding="{Binding Path=TravelCosts, StringFormat='{}{0:C}'}"/>
    <DataGridTextColumn Header="Dining" Binding="{Binding Path=DiningCosts, StringFormat='{}{0:C}'}"/>
    <DataGridTextColumn Header="Total Costs" IsReadOnly="True" Binding="{Binding Path=TotalCosts, StringFormat='{}{0:C}'}"/>
</DataGrid.Columns>

其中 Student 是一个带有一个小添加的实体对象。 TotalCosts 不是 db 表上的字段,因此我为此创建了一个部分类。
public partial class Student
{
    public  Decimal TotalCosts
    {
        get { return (LodgingCosts + RegistrationCosts + TravelCosts + DiningCosts); }
    }
}

我遇到的问题是,当您填写任何其他字段时,TotalCosts 不会自动更新。我的猜测是因为它没有被列为依赖属性。对于没有 set 的属性,如何解决此问题?

最佳答案

你可以在OnPropertyChanged("TotalCosts")依赖的每个属性的setter中调用TotalCosts,它会刷新绑定(bind)

10-08 13:54