Mvvm Flipview未更新SelectedItem
我有这样的FlipViewMvvm Flipview未更新SelectedItem,mvvm,windows-runtime,winrt-xaml,flipview,Mvvm,Windows Runtime,Winrt Xaml,Flipview,我有这样的FlipView <FlipView Grid.Row="1" Grid.RowSpan="2" HorizontalContentAlignment="Center" x:Name="BookPageContentFlipView" ItemsSource="{Binding BookPagesNew,Mode=OneWay}" SelectedItem="{Binding SelectedPage,Mode=TwoWay}"
<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更新此flipview项目资源。现在我的问题是,当我从VM更新ItemsSource并使用NotifyPropertyChanged()
通知视图更新flipview ItemsSource时,我选择的flipview不会使用新数据更新视图
但是,在我移动>2个项目(下一个/上一个)后,视图将正确更新。如何在不重新加载flipview的情况下强制我的flipview更新当前选定的项目?我认为BookPagesNew需要实现接口
INotifyPropertyChanged
因为如果只更改列表中某项的一个属性,视图将不会收到通知
您可以使用此代码来实现接口
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));
}
}
}
在您的VM
BookPagesNew
应该是一个ObservableCollection
如果我理解正确,您可以更新每个元素的HTMLString属性。您的模型是否实现了INotifyPropertyChanged?检查这个,如果你能给出一个示例项目。我的模型是否也需要InotifyProperty更改?甚至我已经在我的ViewModel中使用了它?是的,如果您想更改属性的值Item.HTMLString=“new value”代码>项还必须实现INotifyPropertyChanged,否则视图将不会收到任何通知。阅读有关绑定和INotifyPropertyChanged的更多信息。您可以使用Fody库来实现这个接口,检查一下,希望这对您有所帮助。