我遇到了一个小问题,我尝试将DataGrid的DataTextColumn绑定到计算字段。DataBinding到计算字段
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>
如果学生是一个小的添加实体对象。 TotalCosts不是数据库表中的字段,所以我为此创建了部分类。
public partial class Student
{
public Decimal TotalCosts
{
get { return (LodgingCosts + RegistrationCosts + TravelCosts + DiningCosts); }
}
}
我遇到的问题是TotalCosts在填写任何其他字段时不会自动更新。我猜这是因为它没有列为依赖项属性。如何解决这个问题,对于没有设置的房产?
ü为什么要回答这个问题我回答后? – 2011-03-26 16:36:37
为什么不呢?这不是同一个答案(尽管它也使用OnPropertyCHanged)。我认为最好在setter中做,而不是处理PropertyChanged事件。我不喜欢订阅我自己的活动的想法... – 2011-03-26 16:39:40
是的。现在我注意到了。我假设学生是自动生成的,因此你不能改变Setters。我更喜欢你的想法,但99%的时间不适用(当使用EF,WCF等) – 2011-03-26 16:50:47