我遇到了一個小問題,我嘗試將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