gpt4 book ai didi

mvvm - Flipview 不更新 SelectedItem

转载 作者:行者123 更新时间:2023-12-03 10:16:08 25 4
gpt4 key购买 nike

我有这样的 FlipView

<FlipView Grid.Row="1" Grid.RowSpan="2" HorizontalContentAlignment="Center" x:Name="BookPageContentFlipView" ItemsSource="{Binding BookPagesNew,Mode=OneWay}"
SelectedItem="{Binding SelectedPage,Mode=TwoWay}"
SelectionChanged="BookPageContentFlipViewSelectionChanged" >
<FlipView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Background="Transparent" Orientation="Horizontal"
VirtualizationMode="Recycling" AreScrollSnapPointsRegular="True" />
</ItemsPanelTemplate>
</FlipView.ItemsPanel>
<FlipView.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Center" Width="650" x:Name="GridWebView">
<WebView
common:HTMLStringExtension.HTML="{Binding HTMLString}"
ScriptNotify="OnBookPageContentWebViewScriptNotify"
Tapped="OnBookPageContentFlipViewTapped" />
<Image Source="ms-appx:///Assets/add-bookmark.png" x:Name="BookmarkImage"
Tapped="OnBookmarkImageTapped" HorizontalAlignment="Right" VerticalAlignment="Top"
Width="38"
Height="38" />
</Grid>
</DataTemplate>
</FlipView.ItemTemplate>

</FlipView>

我正在使用 MVVM 并从 VM 更新此翻转 View ItemsSource。现在我的问题是当我从 VM 更新 ItemsSource 并使用 NotifyPropertyChanged()通知 View 更新翻转 View ItemsSource,我选择的翻转 View 没有用新数据更新 View 。

但是在我移动大约> 2个项目(下一个/上一个)项目后, View 正确更新。如何强制我的翻转 View 更新当前选定的项目而无需重新加载翻转 View ?

最佳答案

我认为BookPagesNew需要实现接口(interface)INotifyPropertyChanged因为如果您仅更改列表中某个项目的一个属性,则 View 不会收到通知。

您可以使用此代码来实现接口(interface)

public class BookPagesNew : INotifyPropertyChanged
{
public string HTMLString { get; set; }

public event PropertyChangedEventHandler PropertyChanged;

public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}

在您的虚拟机中 BookPagesNew应该是 ObservableCollection<BookPagesNew>

关于mvvm - Flipview 不更新 SelectedItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com