2011-11-04 69 views
0

我正在用silverlight制作一个网站,我偶然发现了这个问题;URI格式不正确Silverlight导航

我创建了一个自定义的控制(上Menubutton),它具有图像和HyperlinkBut​​ton

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing" 
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:l2="clr-namespace:SilverlightApplication1.Klassen" 
mc:Ignorable="d" 
x:Class="SilverlightApplication1.MenuButton" 
d:DesignWidth="640" d:DesignHeight="480"> 

    <Grid x:Name="LayoutRoot"> 
     <Canvas x:Name="cnvMenuButton" Width="200" Height="50"> 
      <Image Source="/SilverlightApplication1;component/Buttons/MenuButton1.png" Height="50" Width="50" /> 
      <HyperlinkButton x:Name="btnLink" Content="HyperlinkButton" Canvas.Left="55" Canvas.Top="14" FontFamily="Lithos Pro Regular" FontSize="14.667" Foreground="Black" Background="{x:Null}" RenderTransformOrigin="0.5,0.5"/> 
     </Canvas> 
    </Grid> 
</UserControl> 

我想用其中的一些在我的炫魅,以导航navigationFrame到所需的页面。如此以来,HyperlinkBut​​tons与NavigateUri和的TargetName工作,我改变了代码的菜单按钮页面后面,这样我可以从我的炫魅

public partial class MenuButton: UserControl 
{ 

    public MenuButton() 
    { 
     // Required to initialize variables 
     InitializeComponent(); 
    } 


     public string Titel 
     { 
      get { return btnLink.Content.ToString(); } 
      set { btnLink.Content = value; } 
     } 

     public string NaviUri 
     { 
      set { 
       Uri naviuri = new Uri(value); 
       btnLink.NavigateUri = naviuri; 
       } 
     } 

     public string TargetFrameString 
     { 
      get { return btnLink.TargetName; } 
      set { btnLink.TargetName = value; } 
     } 

} 

所以指定URI和的TargetName我在炫魅指定这些属性的后,我得到这个错误: [net_uri_Badformat]参数:调试资源字符串不可用。

代码我在炫魅使用:

我的StackPanel与自定义控制

<StackPanel x:Name="Menu" Orientation="Vertical" Canvas.Top="243" Height="300" Width="100" HorizontalAlignment="Left" RenderTransformOrigin="0.5,0.5" Margin="70,290,0,126"> 
     <StackPanel.RenderTransform> 
      <CompositeTransform/> 
     </StackPanel.RenderTransform> 
     <l1:MenuButton TargetFrame="contentFrame" NaviUri="Home" Titel="Home"/> 
</StackPanel> 

在同一个页面的contentframe

<navigation:Frame x:Name="contentFrame" d:LayoutOverrides="GridBox" RenderTransformOrigin="0.5,0.5"> 
      <navigation:Frame.RenderTransform> 
       <CompositeTransform/> 
      </navigation:Frame.RenderTransform> 
      <navigation:Frame.UriMapper> 
       <navigationCore:UriMapper> 
        <navigationCore:UriMapping MappedUri="/Views/Home.xaml" Uri="Home"/> 
        <navigationCore:UriMapping MappedUri="/Views/About.xaml" Uri="About"/> 
       </navigationCore:UriMapper> 
      </navigation:Frame.UriMapper> 
</navigation:Frame> 

任何人可以帮助我吗?

回答

1

您应该包括第二个参数Uri构造函数:UriType.Relative

+0

这部分的工作,他停下来给[net_uri_Badformat]错误,但现在我不断收到错误:属性“NaviUri”不就在类型菜单按钮存在XML命名空间'clr-namespace:SilverlightApplication1'。但我清楚地界定了我的控制权? – user1013163

0

貌似有一个与你的NaviUri性质轻微的疏忽:它没有get方法。没有办法检索设置的值。

0
NavigationService.Navigate(new Uri("/dllPageTest;component/PageFromDll.xaml",UriKind.RelativeOrAbsolute)); 

此示例适用))