在DataGrid綁定時,有一列的值是需要前面兩列值的相減得出來的結果.而且綁定的實體集合中沒有相應的屬性.
初學wpf,沒用到什麼mvvm.就是簡單的在後台給ItemsSource賦了一個集合對象.
示例代碼:
//User類成員
public string Uid{get;set;}
public decimal CurrentMoney {get;set;}
public decimal PayMoney {get;set;}
List<User> list=getUsers();
dataGrid.ItemsSource=list;
在綁定時,前面兩列分別綁定的是CurrentMoney和PayMoney. 想在第三列綁定前兩列之和.
具體怎麼綁定,希望大神們給點具體的實現代碼.
好吧,看來我這問題還是得自己來答了.
在這裡,就不貼轉換器的代碼了,那個比較簡單,網上一搜很多.
最主要的是像我這種初學wpf的人來說,前端的一些語法和格式其實是個難題,這裡就只貼XAML的代碼了.
<DataGridTextColumn Header="商品數量" Binding="{Binding Quantity}" Width="90" ElementStyle="{StaticResource dgCellCenter}"></DataGridTextColumn>
<DataGridTextColumn Header="調出數量" Binding="{Binding OutNumber}" Width="90" ElementStyle="{StaticResource dgCellCenter}"></DataGridTextColumn>
<DataGridTextColumn Header="庫存數量" Width="90" ElementStyle="{StaticResource dgCellCenter}">
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0}" Converter="{StaticResource multiProductStock}">
<Binding Path="Quantity"></Binding>
<Binding Path="OutNumber"></Binding>
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
怎麼說呢,在網上看了很多關於多值綁定的資料和文檔,都是一個TextBlock綁定前面幾個TextBox的值.沒查到一個在DataGrid中使用的,感覺應該差不多.但是沒有具體的例子,就只能自己慢慢試了,結果還是出來了,至少後面如果有同樣在學wpf的同學遇到這樣的問題,可以參考下,也不致於花費太多時間.
其實這樣的問題,確實可以用其他幾種辦法實現,比如加屬性, 也還可以將數據源做成動態的DataTable也可以. 但是有很多時候,一個業務復雜的類已經夠大了,而只是剛剛某一個界面會用到這樣的屬性,再加個額外的屬性一是感覺沒必要,二是比較麻煩.既然有這麼一個辦法,還是要學會.