如何对 WPF 数据网格中存在的项进行计数并将其显示在另一页中

本文关键字:一页 显示 数据 WPF 数据网 网格 存在 | 更新日期: 2023-09-27 18:33:37

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

我的代码如下:

public ObservableCollection<VLANSPropertyClass> vlan { get; set; }   
<TextBlock Margin="3,0"  
           Style="{StaticResource SummaryValues}"  
           Text="{Binding vlan.Count}"
          />

如何在其他页面上显示 DataGrid 的项目计数?

如何对 WPF 数据网格中存在的项进行计数并将其显示在另一页中

使视图模型成为单个实例。 即。

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 的相同实例,并且您仍然可以在每个窗口中像这样绑定(我的示例每次创建一个新窗口并更新所有窗口中的计数等):

<TextBlock Text="{Binding vlan.Count}" />