簡體   English   中英

以編程方式更改datagrid列標題中排序圖標的顯示

[英]Programatically change display of the sort icon in datagrid column header

我以前曾問過這個問題,但沒有得到答案,但現在我有更多詳細信息。

基本上,我想以編程方式在wpf datagrid列中顯示列排序圖標。

我有以下代碼可以做到這一點:

private void dtgMain_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            dtgMain.Columns[0].SortDirection = ListSortDirection.Ascending;
        }

這似乎可以設置列的排序順序,但是繪制網格時,圖標不會顯示。

當我在方法中添加一個消息框時,它可以正常工作。 我的問題是雙重的。 為什么消息框會導致該方法起作用? 以及如何在不使用消息框的情況下使其正常工作?

這是在其中使用消息框的方法:

private void dtgMain_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
    MessageBox.Show("Here");
    dtgMain.Columns[0].SortDirection = ListSortDirection.Ascending;
}

編輯這是設置數據網格的數據上下文的方法

public void processLoad(string response)
        {
            XmlDataProvider provider = new XmlDataProvider();

            if (provider != null)
            {
                System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(response);
                provider.Document = doc;
                provider.XPath = "/moo/response/data/load/panel";
                dtgMain.DataContext = provider;

            }

        }

如果您需要更多信息,請告訴我。

好的,我懷疑發生的事情是由DataContext更新引起的數據布局更改在您設置方向箭頭的調用之后已完成,因此在您設置方向箭頭后已將其擦除。 有趣的是,就我而言,即使我放入消息框,它也無法正常工作,這可能是因為它在顯示時掛斷了UI線程。

您是否可以嘗試使用調度程序隊列上的類似調用替換設置排序方向的行:

    dtgMain.Dispatcher.BeginInvoke(new Action(() =>
    {
        dtgMain.Columns[0].SortDirection = ListSortDirection.Ascending;
    }), DispatcherPriority.ApplicationIdle);

看看是否可行?

暫無
暫無

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

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