我正在建立一个银光网站,我偶然发现了这个问题;
我创建了一个自定义控件(Menubutton),它有一个Image和一个HyperlinkButton
<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导航到所需的页面。因此,由于HyperlinkButtons使用NavigateUri和TargetName,我更改了MenuButton页面后面的代码,以便我可以从主页面指定URI和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; }
}
}
所以在我的主页中指定这些属性后,我收到此错误: [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>
同一页面中的内容框架
<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>
有人可以帮我这个吗?
答案 0 :(得分:1)
您应该将第二个参数包含在Uri构造函数中:UriType.Relative
答案 1 :(得分:0)
看起来你的NaviUri属性略有疏忽:它没有get方法。无法检索设置的值。
答案 2 :(得分:0)
NavigationService.Navigate(new Uri("/dllPageTest;component/PageFromDll.xaml",UriKind.RelativeOrAbsolute));
此示例有效!))