c# - WPF 中的源绑定(bind),如 Asp.Net

标签 c# wpf xaml mvvm

我有一个事务表来存储一天内发生的所有事务。我把查询写成

select CurrencyCode,TransactionCode,TransactionAmount,COUNT(TransactionCode) as 
[No. Of Trans] from TransactionDetails where CAST(CurrentTime as date)=CAST(GETDATE()as date)
group by TransactionCode, CurrencyCode,TransactionAmount order by CurrencyCode

我得到了这样的输出
CurrencyCode      TransactionCode      TransactionAmount   No.OfTrans
  ARS                 SCN                   12                 1
  AWG                 BNT                   12                 1
  BAM                 BNT                   12                 1
  BND                 BNT                   7                  1
  BWP                 BTC                   45                 1
  EUR                 BCN                   6.6                1
  EUR                 BNT                   90                 1
  EUR                 BNT                   200                1
  JPY                 BNT                   10000              2
  VND                 BNT                   600                1
  VND                 BNT                   800                1
  VND                 BNT                   10000000           1

但根据我的要求,我想在页面上显示这样的报告目的
                       ARS
BNT        0            0
BCN        0            0
SCN        1            12
BTC        0            0
STC        0            0
SNT        0            0
                     -------
Total Balance  --->    70000
++++++++++++++++++++++++++++++++++++
                       VND
BNT        3           10001400
BCN        0            0
SCN        0            0
BTC        0            0
STC        0            0
SNT        0            0
                     -------
Total Balance  --->    17090
++++++++++++++++++++++++++++++++++++

有什么方法可以像 asp.net 那样进行源绑定(bind)。在网格中设计一个模式并根据我的货币代码应用循环。这样我就可以达到我的要求。

最佳答案

首先,您需要在 ListView 中创建一个代表 f.e 一行的类:

public class CurrencyClass
{
       public string CurrencyCode {get;set;}
       public string TransactionCode {get;set;}
       public string TransactionAmount {get;set;}
       public string NoOfTrans {get;set;}
}

然后让我们创建一个 DataContext 类,它拥有一个关于 listview 的集合和方法。
public class CurrencyViewModel
{
       public CurrencyViewModel()
       {
              ListOfCurrency = new ObservableCollection<CurrencyClass>();
       }

       public ObservableCollection<CurrencyClass> ListOfCurrency;
}

因为 list 是 ObservableCollection 的类型,如果它的集合发生变化,它会自动通知您的 ListView。

现在我们需要创建一个代表您的表格的 ListView:
<ListView Name="CurrencyListView">
                <ListView.View>
                    <GridView>
                          <GridViewColumn Width="200" DisplayMemberBinding="{Binding TransactionCode}" Header="" />
                          <GridViewColumn Width="200" DisplayMemberBinding="{Binding NoOfTrans}" Header="" />
                          <GridViewColumn Width="200" DisplayMemberBinding="{Binding TransactionAmount}" Header="" />
                    </GridView>
                </ListView.View>
            </ListView>

现在让我们将 ListView 和 ViewModel 绑定(bind)在一起,例如在您的 Window 构造函数中:
CurrencyViewModel currencyViewModel = new CurrencyViewModel();
CurrencyListView.DataContext = currencyViewModel;
CurrencyListView.ItemsSource = currencyViewModel.CurrencyListView;

现在您需要做的就是将项目添加到 currencyViewModel.CurrencyListView,它将显示在您的 ListView 中。请记住根据您的目的更改 GridViewColumn 的值。

关于c# - WPF 中的源绑定(bind),如 Asp.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883711/

相关文章:

c# - WebBrowser 控件上的选定文本颜色和背景颜色

c# - 如何将表单中的面板保存为图片?

wpf - ValidationRules 没有绑定(bind)

c# - 列表中的 wpf 扩展器在检查时并不总是执行命令

c# - BouncycaSTLe PGP 解密期间的 PartialInputStream

c# - 在 MVC 4 ASP.NET 中处理 'Many to One' 关系

c# - 制作 View 模型错误

c# - 如何在 ListView 中访问 WebView 的 NavigateToString 属性

wpf - ComboBox 的自定义模板忽略 DisplayMemberPath 的使用

c# - 如何让一个简单的超链接在 XAML 中工作?