使用C#.NET 4.5,MS visual studio 2012,WPF。
嗨,刚刚让这段代码工作,它基本上是通过行遍历datgrid。
警告他可能会冒犯所有WPF巫师!public IEnumerable<System.Windows.Controls.DataGridRow> GetDataGridRow(System.Windows.Controls.DataGrid grid)
{
var itemsource = grid.ItemsSource as System.Collections.IEnumerable;
paretogrid.UpdateLayout();
if (null == itemsource) yield return null;
foreach (var item in itemsource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; // null?
if (null != row) yield return row;
}
}
private void ShowArrows()
{
var rows = GetDataGridRow(paretogrid); // fetching null?
foreach (DataGridRow r in rows)
{
DataRowView rv = (DataRowView)r.Item;
}
}
因此,您可以看到我遍历行。现在我要做的是将列索引2处的单元格值与每个“行”上的列索引4进行比较,然后如果为true或false,则相应地更新列5。我可以遍历可以让我按单元格移动的列,但不是我所追求的那些
foreach (DataGridColumn column in paretogrid.Columns)
它是这样的:
paretogrid.Columns[2].GetCellContent(something here) as textblock;
答案 0 :(得分:1)
原来我想过这个。这是我的解决方案,
var test1 = paretogrid.Columns[7].GetCellContent(paretogrid.Items[2]) as TextBlock;
int t1convert = Convert.ToInt32(test1.Text);
var test2 = paretogrid.Columns[8].GetCellContent(paretogrid.Items[2]) as TextBlock;
int t2convert = Convert.ToInt32(test2.Text);
if (t1convert == t2convert)
{
MessageBox.Show("it worked!");
}
感谢您指出@DJ KRAZE
答案 1 :(得分:1)
请参阅下面的以下说明,它将有助于澄清您看到所见内容的原因
好的,让我更容易理解TextBox,例如,如果我这样做:
var myInt = (int)textBox1.text;
例如,这会编译,因为我暗示我希望myInt
存储Int32
值,但是:
var myInt = (int)textBox1;
会失败,因为您无法将Object
TextBox
转换为值,这样可以更容易地查看您的初始错误在何处获得它。
这也与WinForms
vs WPF
无关,如果基本上我确信我们之前已经做过很多事情,因为我们忘记将.Text
添加到结尾当我们想要转换对象所持有的Value
而不是对象本身