WPF中DataGrid獲取選中行號最簡便的方式

在WPF開發過程中,DataGrid控件可謂是十分方便,用於綁定DataTable和List的數據很好用,內部提供了許多方法使用,相對Winform的DataGridView樣式也多很多,是經常用到的數據顯示控件。

但是唯一的不足,是WPF中的DataGrid沒有直接獲取選中行行號的方法,可能有的人說可以通過SelectedIndex來獲取,但是如果選擇多行時,想要獲取所有選中行的行號就不行了。選中多行時,可以獲取選中行的對象,但是不能直接獲取到所有選中行的行號。

之前過於執着,一直尋找直接獲取選中多行時每行的行號,最終無果,最近偶然想到,雖然不能直接獲取到,但是可以通過其他方式獲取。即先獲取到選中行的對象,然後通過對象在用IndexOf來獲取對象的行號即可,代碼如下:

	private List<int> selectedIndex = null;
	/// <summary>
    /// 右鍵匹配,鼠標按下的時間:獲取選中行的行索引
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void SysData_MouseDown(object sender, MouseButtonEventArgs e)
    {
        int startindex = this.SysData.SelectedIndex;
        if (startindex == -1)
        {
            selectedIndex = null;
            return;
        }

        var selectedRows = this.SysData.SelectedItems;
        ItemCollection dvgitems = this.SysData.Items;
        selectedIndex = new List<int>();
        foreach (var sltitem in selectedRows)
        {
            int rindex = dvgitems.IndexOf(sltitem);
            selectedIndex.Add(rindex);
        }
        if (selectedIndex.Count == 0) selectedIndex = null;
    }

通過該方法即可即便的獲取到選中多行時的所有行行號,問題終於解決,希望對大家有所幫助.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章