簡體   English   中英

使SelectedItem專注於ColumnSort WPF

[英]Keep SelectedItem in Focus on ColumnSort WPF

我正在嘗試做的是當用戶通過單擊DataGrid頂部的標題對列進行排序時,使DataGrid.SelectedItem保持焦點。 現在,我在單擊DataGrid列標題時調用自己的方法;

    private void headerClick(object sender, RoutedEventArgs e)
    {
        var selectedCompany = dataGrid.SelectedItem as CompanyModel;
        var columnHeader = sender as DataGridColumnHeader;
        if (columnHeader != null)
        {
            SetSelectedCompany(Convert.ToInt32(selectedCompany.CompanyID));
        }
    }

這稱為SetSelectedCompany

    private void SetSelectedCompany(int companyID)
    {
        try
        {
            foreach (var item in dataGrid.Items.OfType<CompanyModel>())
            {
                if (item.CompanyID == companyID.ToString())// suppose iterRow.Row.ItemArray[0] is ID column in yourDataGrid
                {
                    dataGrid.SelectedItem = item;
                    dataGrid.ScrollIntoView(dataGrid.SelectedItem);
                    break;
                }
            }
        }
        catch (Exception ex)
        {
            var hEs = new HandleExceptionService();
            hEs.HandleException(ex.ToString());
        }
    }

當我從UI的其他位置調用此方法時,該方法確實起作用,但是單擊DataGrid列標題時,該方法不起作用。 這是由於調用了SetSelectedCompany方法,然后過濾了DataGrid嗎? 如何解決這個問題,所以SetSelectedCompany是篩選過程中最后調用的方法?

嘗試處理ColumnHeader click ColumnHeader只是一個Button

XAML:

<DataGrid Name="dataGrid">
   <DataGrid.Resources>
      <Style TargetType="DataGridColumnHeader">
         <EventSetter Event="Click" Handler="columnHeader_Click" />
      </Style>
   </DataGrid.Resources>
</DataGrid>

private void columnHeader_Click(object sender, RoutedEventArgs e)
{
   var columnHeader = sender as DataGridColumnHeader;
   if (columnHeader != null)
   {
      SetSelectedCompany(11);     
   }
}

我看不到在保持用戶選擇的行的焦點的同時對數據綁定行進行排序的簡便方法,但是如果您可以提供更多有關為什么排序后需要焦點的信息(這不是常規的UI行為),那么也許我們可以找出另一種方法給貓皮

嘗試將用戶選擇的行綁定到實際數據,例如記錄ID或其他內容。 然后在您的排序方法上,將焦點設置為ID = {binded-value}的行

WPF綁定DataGrid中的SelectedItem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM