2

我想在事件的页面中显示一个弹出窗口。我在页面定义中添加了一个弹出窗口。它第一次工作正常。但是由于 Popup 不是可视树的一部分,因此下次访问该页面时会再次创建弹出窗口。我怎样才能避免这种情况?我知道的唯一选择是在代码隐藏中编写一个静态弹出窗口。但是有什么办法可以在 xaml 中做到这一点?(或可能在 VM 中)

这是我在 XAML 中的代码。

<Popup Grid.Row="2" x:Name="popup" IsOpen="{Binding VenueListOpen}">
                <ScrollViewer Height="600" Margin="0,0,0,20" Background="#55000000">
                    <StackPanel Width="{Binding DeviceWidth}">
                        <ItemsControl ItemsSource="{Binding EventsList}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Margin="20,0" Background="{Binding BindsDirectlyToSource=True, Converter={StaticResource EventRowBackgroundConverter}}">                                      
                                        <TextBlock Margin="20,5" FontSize="30" Text="Metlife stadium" TextWrapping="Wrap"/>
                                        <TextBlock Margin="20,5" Foreground="SkyBlue" Text="www.metlifestadium.com" TextWrapping="Wrap"/>                                        
                                    </StackPanel>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </StackPanel>
                </ScrollViewer>
            </Popup>
4

2 回答 2

0

Visible进入页面时将其属性设置为 false 或 true 怎么样?

于 2013-09-06T10:47:19.563 回答
0

我找到了解决方案。可能有更好的解决方案,但这对我有用:

在后面的代码中,通过将绑定设置为null. 因此,当您离开时,当前popup将成为孤儿,当您再次访问该页面时,导航将创建新页面以及新的弹出窗口。但是这次只会出现新的弹出窗口,因为旧的弹出窗口没有绑定,datacontext所以绑定IsOpen不会影响该弹出窗口的任何旧实例。

于 2013-11-08T06:56:16.377 回答