在两个 tabview 中填充相同的数据
In two tabview populating same data
我是 c#、WPF 新手,
我使用选项卡控件在同一 Ui、
中展示两个不同的数据 table
即选项卡 A 和选项卡 B
选项卡 A- 仅显示甘特图,选项卡 B- 仅显示 Table 视图,两者具有不同的数据。
当我在 Table 视图中运行甘特图视图时数据显示。
原因:数据上下文的绑定
我对在一个应用程序中使用多个 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");
}
}
}
创建一个具有 2 个属性的 DataContext
,一个用于甘特图数据,一个用于 Table 数据,可能是这样的:
public class TabViewDataContext
{
public List<SampleGridItem> GanttData { get; set; }
public List<CsvGChart> TableData { get; set; }
}
并将每个控件绑定到相应的数据上下文 属性,class 应该如下所示:
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");
}
}
}
我是 c#、WPF 新手,
我使用选项卡控件在同一 Ui、
中展示两个不同的数据 table即选项卡 A 和选项卡 B
选项卡 A- 仅显示甘特图,选项卡 B- 仅显示 Table 视图,两者具有不同的数据。
当我在 Table 视图中运行甘特图视图时数据显示。
原因:数据上下文的绑定
我对在一个应用程序中使用多个 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");
}
}
}
创建一个具有 2 个属性的 DataContext
,一个用于甘特图数据,一个用于 Table 数据,可能是这样的:
public class TabViewDataContext
{
public List<SampleGridItem> GanttData { get; set; }
public List<CsvGChart> TableData { get; set; }
}
并将每个控件绑定到相应的数据上下文 属性,class 应该如下所示:
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");
}
}
}