如何设置实际导航的Silverlight超链接按钮?

时间:2010-10-19 00:21:22

标签: c# silverlight

在SL4中,我发现很难弄清楚如何在单击时使HyperlinkBut​​ton导航到同一应用程序中的另一个Silverlight页面。结构是:

<HyperlinkButton Content="Technical Information Screen" Height="23"
Name="hyperlinkButton1" Width="320" NavigateUri="/tis.xaml" />

“tis.xaml”与MainPage.xaml位于同一文件夹中,这是此按钮所在的位置。单击时,该按钮会引发“404 Not Found”。

如果我更改为在MainPage构造函数中以编程方式填充NavigateUri,如:

hyperlinkButton1.NavigateUri = new Uri("/tis.xaml", UriKind.Relative);

我得到了相同的结果,就像我没有用“/”装饰一样,并且UriKind设置为Absolute或RelativeOrAbsolute。这一切都非常神秘,但我知道它必须以某种方式可行,或者为什么要控制它?

3 个答案:

答案 0 :(得分:2)

超链接按钮的默认行为是将浏览器指向另一个页面(即整个其他HTML页面)。

详细解释了同一应用程序中XAML页面之间的导航here(我想你必须在超链接按钮的点击事件中调用NavigationService.Navigate()。)

答案 1 :(得分:2)

您需要将HyperlinkBut​​ton的TargetName属性设置为导航名称:要用新页面填充的帧控件。将其浓缩为必需品:

<UserControl ...
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation">
    <Grid>
        <HyperlinkButton Content="Technical Information Screen" NavigateUri="/tis.xaml" TargetName="ContentFrame"/>
        <navigation:Frame x:Name="ContentFrame"/>
    </Grid>
</UserControl>

答案 2 :(得分:0)

最有可能的问题是uri格式,请尝试指向托管Silverlight控件的aspx页面。

hyperlinkBut​​ton1.NavigateUri = new Uri(“http://foo.page.aspx”);