我为数据表创建了简单的机制xaml看起来很简单:
entity.allLocList
后面的MVVM代码基于数据表,而且相当简单:
<DataGrid ItemsSource="{Binding CurrentsFlagValuesView}" AutoGenerateColumns="True" />
但是当我点击单元格(如列标题)和单元格值时,我遇到了一个问题,或者我想要获取单元格的数据。我设法在没有MVVM的情况下这样做:
private void GenerateDataView()
{
CurrentsFlagValuesView = new DataTable();
CurrentsFlagValuesView.Columns.Add("Bits");
var bitLength = 0;
foreach (CurrentsFlagAnalysis flag in CurrentsFlagValues)
{
CurrentsFlagValuesView.Columns.Add(flag.DailyCurrentsTimestampInterval.ToString("yyyy-MM-dd"));
bitLength = flag.CurrentFlagsLength;
}
for (var bit = 0; bit < bitLength; bit++)
{
List<CurrentFlagEventEnum> flags = CurrentsFlagValues
.Select(value => value.CurrentFlags.ElementAt(bit))
.Select(value => value ? (CurrentFlagEventEnum)bit + 1 : CurrentFlagEventEnum.None)
.ToList();
var dataRowValues = new List<object> { bit };
dataRowValues.AddRange(flags.Cast<object>());
CurrentsFlagValuesView.Rows.Add(dataRowValues.ToArray());
}
}
但现在我想改造那种模式,但我不知道如何。任何想法如何绑定命令?
答案 0 :(得分:1)
您可以将CurrentCell
的{{1}}属性绑定到DataGrid
(非DataGridCellInfo
)源属性,前提是您设置了DataGridCell
{ {1}}两个Mode
:
Binding
然后,只要在视图中选择单元格,就可以设置视图模型的source属性,只需将当前逻辑移动到视图模型即可:
TwoWay
您还可以将此功能包装在将视图模型的source属性设置为actuall单元格值的行为中:
https://www.codeproject.com/Articles/28959/Introduction-to-Attached-Behaviors-in-WPF https://blog.magnusmontin.net/2014/01/30/wpf-using-behaviours-to-bind-to-readonly-properties-in-mvvm/
答案 1 :(得分:0)
您可以简单地在视图模型中绑定当前单元格属性,并且您将始终拥有当前单元格:
private DataGridCell cellInfo;
public DataGridCell CellInfo
{
get { return cellInfo; }
}
在视图模型中:
<template>
<div class="fileUpload">
<b-container fluid>
<h4>Image Overview</h4>
<b-button @click="$refs.fileInput.click()" class="btn-right">Select an image</b-button>
<b-table @row-clicked="viewImage" striped hover :items="images" :fields="image_fields"></b-table>
<input style="display: none" ref="fileInput" type="file" @change="fileSelected" enctype="multipart/form-data">
<b-button variant="success" class="btn-right" @click="uploadImage" method="post">Upload image</b-button>
</b-container>
</div>