我有一个情况。我有一个包含ListBox的页面。如果ListBox能够从Web服务获取数据,则使用Items填充ListBox。现在,当用户手机上没有网络连接或网络服务没有回复状态时,我想向用户显示一个弹出窗口,其中包含重试选项或选择确定以保持在同一页面上(虽然听起来很愚蠢)。为此,我使用了Canvas:
<Canvas Name="Nonetwork" Height="150" Width="280" HorizontalAlignment="Center" VerticalAlignment="Center" Background="DodgerBlue" Visibility="Collapsed" Margin="111,160,92,160" >
<TextBlock VerticalAlignment="Top" Height="120" Width="280" Text="No Network is currently availabe" TextAlignment="Center" TextWrapping="Wrap" Foreground="White" FontSize="28" />
<Button Margin="30, 80" Height="60" Width="100" Content="OK" FontSize="18" Click="Ok_Click"/>
<Button Margin="150, 80" Height="60" Width="100" Content="Retry" FontSize="18" Click="Retry_Click"/>
</Canvas>
正如大多数有经验的人都会猜到的那样,画布被埋在列表框中,并且在没有网络连接时无法访问。所以我有一个带有画布的空白页面,但是用户无法单击“确定”或“重试”。请帮忙
如果有任何其他方法可以解决此问题,请告诉我。我尝试过Popup但是我无法从弹出窗口导航到主页面,因为这是一个用户控制页面。任何帮助都非常感谢
答案 0 :(得分:1)
好吧,我将我的Canvas放在ListBox下面,问题解决了。我不知道控件在XAML中的定位会产生如此大的影响......
答案 1 :(得分:0)
在Silverlight中呈现元素的顺序首先取决于它们在可视对象层次结构中的显示位置,其次是它们的ZIndex属性。
Canvas有一个名为ZIndex的第三个附加属性,可用于覆盖元素的默认分层。虽然Canvas.ZIndex附加属性是由Canvas类定义的,但它实际上适用于任何类型的面板。
您还可以尝试Canvas.ZIndex属性:
答案 2 :(得分:0)
你所做的是一种错误的做法,完全没有被推荐。
ChildWindow
是您应该用来显示此类对话框的类。
使用Popup
也是您可以使用的另一种方法。
注意:我知道最简单的方法是使用MessageBox.Show()
,但它会创建一个Silverlight框架的弹出框,并且不允许主题/样式和其他自定义。