簡體   English   中英

WPF ListView不顯示可觀察集合的內容

[英]WPF ListView not showing contents of Observable Collection

我在WPF應用程序中有一個listview,應該顯示可觀察集合的內容。 我在較舊的版本中顯示了它,但是為了更頻繁地進行列表視圖更新,我對XAML進行了很多更改,放回XAML之后,它現在什么也不顯示。

這是XAML:

<TabItem GotFocus="TabSelect">
    <TabItem.Header>
        <TextBlock FontSize="12pt">error log</TextBlock>
    </TabItem.Header>
    <Grid><ListView Name="JfifoList" ItemsSource="{Binding JFifoErrorCollection}" Background="Transparent">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Time}" Header="time" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding FEStatus}" Header="fe status" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding BEStatus}" Header="be status" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding Trigger}" Header="trigger" Width="100" />
                </GridView>
            </ListView.View>
        </ListView></Grid>
</TabItem>

我確實將列表的DataContext設置為“ this”窗口:

JfifoList.DataContext = this;

調試時,我可以看到集合已填充,因此有數據要顯示。盡管也調試時,我反復看到一個錯誤,指出“ PresentationFramework.dll中發生了'System.NotSupportedException'類型的第一次機會異常”在調試輸出中。

編輯:我看了更多,發現UI元素必須在UI線程中更新...由於某種原因(我沒有在代碼中創建任何東西)程序中運行着很多線程,並且它們都似乎正在更新我的ObservableCollection ...不知道這可能是問題所在...

必須在UI線程中對綁定到視圖的列表內容進行修改。 要捕獲您的App UI線程,您可以使用如下代碼:

Application.Current.Dispatcher.Invoke(DispatcherPriority.Render, new Action(() => JfifoList = whateverData));

暫無
暫無

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

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