В двух вкладках заполняются одинаковые данные - PullRequest
0 голосов
/ 23 сентября 2018

Я новичок в c #, WPF,

Я использовал Tab Control для демонстрации двух разных таблиц данных в одном интерфейсе,

т.е. Tab A и Tab B

На вкладке A- отображается только представление Ганта, а на вкладке B - только представление таблицы. Оба имеют разные данные.

Когда я запускаю отображение данных представления Ганта в представлении таблицы.

Причина: привязкаКонтекст данных

Я не уверен, что использование нескольких DataContext в приложении может помочь любому.

Ниже приведен мой код:

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;


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();
            ganttTab();
            tableTab();


        }

        public void 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)
                        });
                }
            }

            DataContext = dataItems;


        }

        public void tableTab()
        {
            DataContext = FunctionalFun.UI.CsvParseDataService.ReadFile(@"Unit Records Sample.csv");
        }        
    }
}

1 Ответ

0 голосов
/ 23 сентября 2018

Создать DataContext с 2 свойствами, одно для данных Ганта и одно для данных таблицы, может быть что-то вроде этого:

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");
        }        
    }
}
...