在SL4中,我发现很难弄清楚如何在单击时使HyperlinkButton导航到同一应用程序中的另一个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。这一切都非常神秘,但我知道它必须以某种方式可行,或者为什么要控制它?
答案 0 :(得分:2)
超链接按钮的默认行为是将浏览器指向另一个页面(即整个其他HTML页面)。
详细解释了同一应用程序中XAML页面之间的导航here(我想你必须在超链接按钮的点击事件中调用NavigationService.Navigate()
。)
答案 1 :(得分:2)
您需要将HyperlinkButton的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页面。
hyperlinkButton1.NavigateUri = new Uri(“http://foo.page.aspx”);