繁体   English   中英

"ListView 未更新 itemsource ObservableCollection 项目属性更改"

[英]ListView not updating on the itemsource ObservableCollection Item Property change

考虑以下示例代码:

视图.xml

<Grid>
    <ListView Name="NameList" HorizontalAlignment="Left" Height="142" Margin="55,45,0,0" VerticalAlignment="Top" Width="389">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <Label Content="{Binding FirstName}"/>
                    <Label Content="{Binding LastName}" Grid.Column="1"/>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
    <Button Content="Button" HorizontalAlignment="Left" Margin="120,256,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>

</Grid>

更改项目时,只有在添加,删除或移动项目时才会触发ObservableCollection事件。 您必须在项类中实现INotifyPropertyChanged接口,并在集合中注册每个项事件。

看到这里

如果您对集合进行了大量更改,则可以提高

NotifyCollectionChangedAction.Reset

事件重置所有

看到这里

我也在 WinUI 上使用ListView<\/code>和ObservableCollection<\/code>解决同样的问题。

你需要了解的是ObservableCollection<\/code>只负责通知集合的变化。 项目级别更改通过INotifyPropertyChanged<\/code>处理。 但是,对于要应用的那些,您需要确保您的绑定模式至少是一种方式,如果需要,可以使用两种方式。

您的 XAML 应如下所示: Text="{x:Bind Title, Mode=OneWay}<\/code>

不要尝试那里提出的建议,这是错误的: ObservableCollection 没有注意到其中的项目何时更改(即使使用 INotifyPropertyChanged)<\/a>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM