【发布时间】:2020-09-08 05:54:40
【问题描述】:
我正在使用 MVVM 模式构建应用程序。
我的问题是我的网格应该有动态数量的列,这意味着不可能简单地将 Collection 绑定到 itemsource。 因此,我在网上搜索并发现我可以使用 Dataview。 现在可以通过代码创建列,但是我遇到了不同事件的问题。
如果用户选择一个或多个单元格,我需要一个监听器。我需要开始列/行和结束列/行。
此外,如果用户将鼠标悬停在每个单元格的单元格上(我认为是工具提示?),我想显示文本。 我从数据库中获取每个单元格的内容。内容是一个简单的字母和一个文本,当我将鼠标悬停在单元格上时应该出现。
Xaml:
<DataGrid ItemsSource="{Binding DataView, Mode=TwoWay}" AutoGenerateColumns="True" SelectionUnit="Cell" SelectionChanged="DataGrid_SelectionChanged">
</DataGrid>
我的视图模型:
private DataView _dataView;
public DataView DataView
{
get { return _dataView; }
set
{
_dataView = value;
OnPropertyChanged("DataView");
}
}
public MainWindowViewModel(IWindowController windowController) : base(windowController)
{
DataColumn colItem = new DataColumn("Arbeiter",
Type.GetType("System.String"));
ToolTip = " YAYA";
DataTable table = new DataTable("table");
table.Columns.Add(colItem);
DateTime date = new DateTime(2021, 1, 1);
DateTime start = DateTime.Now;
for (long i = 0; i < (date -DateTime.Now).Days; i++) {
colItem = new DataColumn(start.ToShortDateString(), Type.GetType("System.String"));
start = start.AddDays(1);
table.Columns.Add(colItem);
}
DataRow NewRow;
DataColumn newCol;
for (int i = 0; i < 5; i++)
{
NewRow = table.NewRow();
NewRow["Arbeiter"] = "TEST";
table.Rows.Add(NewRow);
}
// Change the values in the table.
table.AcceptChanges();
table.Rows[0]["Arbeiter"] = "FH";
table.Rows[1]["Arbeiter"] = "WA";
table.Rows[2]["Arbeiter"] = "FD";
DataView view = new DataView(table);
}
【问题讨论】: