1

検索クエリに基づいて DataGrid の行を強調表示する単純な検索機能を実装しました。その要点を以下に示します。

public bool scrollToSearch(string query) {
    dataGrid.SelectedItems.Clear();

    for (; searchIndex < registrants.Count; searchIndex++) {
        foreach (string field in registrants[searchIndex]) {
            if (field.ToLower().Contains(query)) {
                dataGrid.SelectedItem = registrants[searchIndex];
                dataGrid.ScrollIntoView(registrants[searchIndex]);
                searchIndex++;
                return true;
            }
        }
    }     
}       

リストで一致するものを検索し、その行を強調表示 (選択) し、スクロールして表示します。問題は、DataGrid がソートされている場合、元のソートされていないリストを検索しているため、最初の結果ではなく一見ランダムな行が強調表示されることです。代わりにソートされたリストを検索する方法はありますか?

4

2 に答える 2

1

ListCollectionView が正しい方法であるという Anurag のコメントに同意します。ListCollectionView のドキュメントについては、こちらを参照してください。ListCollectionView は、ソースとディスプレイの間に、並べ替え、フィルタリング、およびグループ化を処理する別のレイヤーを作成します。DataGrid を ListCollectionView にバインドしSetCurrent()、選択した項目を指定するために使用します。

于 2012-04-20T01:22:40.420 に答える
0

最初にこれを行います...。

var view = CollectionViewSource.GetDefaultView(registrants);

次に、コードviewの代わりに使用しregistrantsます。

于 2012-04-20T05:12:45.150 に答える