我正在构建一个SL4应用程序。我有两个控件,一个顶部搜索栏和一个底部收藏夹栏,我希望每个页面都有一个。我不确定要做到这一点的最佳方法是什么。Silverlight:在每个页面上显示相同的控件
我的当前方法使用一个导航帧作为根视觉:
App.xaml.cs:
this.RootVisual = new NavFrame();
NevFrame.xaml:
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<my:TopSearchBar x:Name="topSearchBar" Grid.Row="0"/>
<navigation:Frame x:Name="navigationFrame" Source="/HomePage.xaml" Grid.Row="1"/>
<my:BottomFavoritesBar x:Name="bottomFavoritesBar" Grid.Row="2"/>
</Grid>
然后,我会改变框架内的页面,留下持久性元素到位。这是正确的方法,还是有其他一些首选模式?
但是,如果我这样做,我不知道如何让TopSearchBar
和BottomFavoritesBar
用户控件做导航。 (一般情况下,我不知道如何直接从UserControl
做导航。)
当TopSearchBar
是每个页面中的一员,我必须在每一页上的代码隐藏验证码:
topSearchBar.ParentPage = this;
TopSearchBar
然后可以使用此引用做导航:
ParentPage.NavigationService.Navigate(new Uri("/SearchPage.xaml?q=" + searchBox.Text, UriKind.Relative));
有没有更好的方式来做到这一点?这感觉有点尴尬。如果导航需要参考页面,我如何从NavFrame
传递该参考?
你能告诉你如何使用依赖属性来做到这一点吗?我不确定他们到底是什么,或者你为什么需要他们。 – 2010-11-20 17:46:30
@Rosarch:查看我的编辑。 – AnthonyWJones 2010-11-21 14:08:03
不错!这很好。你能解释为什么我需要一个依赖属性,而不仅仅是一个正常的CLR属性吗? – 2010-11-22 15:02:58