c# - 如何计算 WPF 数据网格中存在的项目并将其显示在另一个页面中?

标签 c# wpf mvvm datagrid observablecollection

我正在使用 MVVM 模型在 C# WPF 应用程序中工作。我有一个 DataGrid,我在其中添加多个值,我想计算网格中存在的项目数并将该值显示在另一个页面中。问题是计数显示在我有我的 DataGrid 的同一页面上,但它没有在另一页上显示计数。

我的代码如下:

public ObservableCollection<VLANSPropertyClass> vlan { get; set; }   

<TextBlock Margin="3,0"  
           Style="{StaticResource SummaryValues}"  
           Text="{Binding vlan.Count}"
          />

如何在不同的页面上显示 DataGrid 的项目数?

最佳答案

使您的 ViewModel 成为单个实例。 IE。

public class ViewModel
{
    private static ViewModel instance = new ViewModel();

    private ViewModel()
    {

    }

    public static ViewModel Instance
    {
        get
        {
            if (instance == null)
                instance = new ViewModel();
            return instance;
        }
    }

    public ObservableCollection<string> vlan { get; set; }
}

然后,您可以在您的第一个窗口中,将 DataContext 设置为 ViewModel.Instance,即。
public MainWindow()
    {
        InitializeComponent();
        this.DataContext = ViewModel.Instance;
        ViewModel.Instance.vlan=new ObservableCollection<string> { "Fred", "Theo", "Lil Kitty" };
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ViewModel.Instance.vlan.Add(String.Format("String {0}", ViewModel.Instance.vlan.Count + 1));

        Window1 win = new Window1();
        win.Show();
    }

然后你可以有另一个窗口,也将 DataContext 设置为 ViewModel.Instance,即:
public Window1()
    {
        InitializeComponent();
        this.DataContext = ViewModel.Instance;
    }

这将允许您将两个窗口设置为 ViewModel 的相同实例,并且您仍然可以在每个窗口中像这样绑定(bind)(我的示例每次都会创建一个新窗口并更新所有窗口中的计数等):
<TextBlock Text="{Binding vlan.Count}" />

关于c# - 如何计算 WPF 数据网格中存在的项目并将其显示在另一个页面中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379040/

相关文章:

c# - 我怎样才能使这个极小极大算法完美地工作

c# - 如何从 SqlConnection 对象中获取 "detach"一个 SqlDataReader?

wpf - 将实现注入(inject)可移植类库的模式是否有名称?

.net - WPF - 将列表框绑定(bind)到列表 <string> - 我做错了什么?

wpf - 在 Josh Smith 的 MVVM 示例中使用 ViewModel 设置 TabItem 的内容属性

c# - 在WPF中创建VS2012风格的ListView/Stack面板

c# - EF5 和 .NET 4.5 中的 NotMapped 错误

LinQ 查询中 lambda 表达式中的 C# 多个变量

c# - 自动选择组合框的第一项

c# - TabControl- 防止用户更改选定的选项卡 : MessageBox causing bug