在两个tabview中填充相同的数据

时间:2018-09-23 02:51:45

标签: c# wpf view datacontext multiple-instances

我是C#,WPF的新手,

我使用Tab控件在同一Ui中展示了两个不同的数据表,

即标签A和标签B

在选项卡A-中仅显示甘特图视图,在选项卡B-中仅显示“表格”视图,两者均具有不同的数据。

当我在表格视图中运行甘特图视图数据时显示。

原因:数据上下文的绑定

我很困惑在一个应用程序中使用多个DataContext可以帮助我。

下面是我的代码:

.ebextensions/https-backendauth.config

1 个答案:

答案 0 :(得分:0)

创建一个具有2个属性的DataContext,其中一个属性用于Gantt数据,另一个属性用于Table数据,

public class TabViewDataContext
{
    public List<SampleGridItem> GanttData { get; set; }
    public List<CsvGChart> TableData { get; set; }
}

并将每个控件绑定到相应的数据上下文属性,该类应如下所示:

namespace APE.WPF.Controls.DynamicGrid
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        //public List<CsvGChart> DataContext1 { get; }

        public MainWindow()
        {
            InitializeComponent();
            var context = new TabViewDataContext
            {
                GanttData = ganttTab(),
                TableData = tableTab()
            }
            this.DataContext = context;
        }

        public List<SampleGridItem> ganttTab()
        {
            var random = new Random();
            var dataItems = new List<SampleGridItem>();

            for (int x = 0; x < 100; x++)
            {
                for (int y = 1; y < 10; y++)
                {
                    dataItems.Add(
                        new SampleGridItem()
                        {
                            ProductionDate = new DateTime(random.Next(2014, 2014), random.Next(1, 12), random.Next(1, 27)),
                            ProductName = string.Format("10-" + y),
                            ProductionCount = random.Next(1, 2) * random.Next(0, 30)
                        });
                }
            }
            return dataItems;
        }

        //Not sure if this should return that type
        public List<CsvGChart> tableTab()
        {
            return FunctionalFun.UI.CsvParseDataService.ReadFile(@"Unit Records Sample.csv");
        }        
    }
}