这是一个复杂的功能实现,其中日志管理器的一个实例包含需要被绑定的数据源。由于主窗口被复杂的内容填满,因此需要设计一个弹窗来专门显示数据框图。以下是实现步骤:
设计主页面:
设计子页面:
设置DataContext:
public partial class MainWindow : Window
{
public static MainWindowViewModel MainWindowViewModelDatacontext;
public MainWindow()
{
InitializeComponent();
MainWindowViewModelDatacontext = new MainWindowViewModel();
DataContext = MainWindowViewModelDatacontext;
}
}
public partial class ChildView : Window
{
public ChildView()
{
InitializeComponent();
DataContext = MainWindow.MainWindowViewModelDatacontext;
}
}
编辑ViewModel:
Index
。Logmanager
,包含一个ObservableCollection
类型的集合属性,用于DataGrid的数据绑定。MainWindowViewModel
中,创建日志管理器的实例和按钮命令。using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace 弹窗数据框图
{
public class MainWindowViewModel:BindableBase
{
private ICommand _command;
public ICommand Command => _command ??= new DelegateCommand(ExCommand);
private Logmanager _logExcel;
public Logmanager LogExcel
{
get { return _logExcel; }
set { SetProperty(ref _logExcel, value); }
}
public MainWindowViewModel()
{
LogExcel=new Logmanager();
Main();
}
public void Main()
{
LogExcel.DataGridSource.Clear();
LogExcel.DataGridSource.Add(new Index { Name = "小红", Age = 14, Description = "初中生" });
LogExcel.DataGridSource.Add(new Index { Name = "小明", Age = 16, Description = "高中男生" });
LogExcel.DataGridSource.Add(new Index { Name = "小美", Age = 16, Description = "高中女生" });
}
public void ExCommand()
{
ChildView childView = new ChildView();
childView.Show();
}
}
public class Logmanager:BindableBase
{
private ObservableCollection _dataGridSource;
public ObservableCollection DataGridSource
{
get { return _dataGridSource; }
set { SetProperty(ref _dataGridSource, value); }
}
public Logmanager()
{
DataGridSource=new ObservableCollection();
}
}
public class Index
{
public string Name { get; set; }
public int Age { get; set; }
public string Description { get; set; }
}
}
运行结果如下:弹出窗口显示了和主页面相同内容的数据框图。