我正在使用 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/