2

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;
4

2 に答える 2

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

于 2013-04-04T14:25:38.757 に答える