我想了解如何通过根据点击次数仅单击一个“下一步”按钮来更新源属性,并能够在每次单击该按钮时将不同的页面加载到框架中。任何建议都将受到高度赞赏!预先感谢您。
主窗口代码:
<Grid x:Name="LayoutRoot">
<Frame Content="Frame" Source="/WpfApplication1;component/Page1.xaml"/>
<local:NavUserControl HorizontalAlignment="Center" VerticalAlignment="Bottom"/>
</Grid>
包含按钮的用户控件:
<StackPanel x:Name="LayoutRoot" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0,0,0,20">
<Button Content="Back" HorizontalAlignment="Left" Width="75"/>
<Button Content="Next" HorizontalAlignment="Left" Width="75" />
</StackPanel>
最佳答案
创建一个实现 NextPageCommand
和 PreviousPageCommand
命令的 PageViewModel
类,这些命令分别引发 UserNavigedToNextPage
和 UserNavigedToPreviousPage
事件。为了简单起见,还让它们公开 PageViewModel
类型的 NextPage
和 PreviousPage
属性。为每个页面创建 PageViewModel
的子类。
为拥有的 UserControl
创建一个 View 模型类,该类公开 PageViewModel
类型的 CurrentPage
属性。创建所有 PageViewModel
对象,并在每个对象上设置 NextPage
和 PreviousPage
。在这些对象上添加导航事件的处理程序,如下所示:
public void Page_UserNavigatedToNextPage(object sender, EventArgs e)
{
if (sender == CurrentPage && CurrentPage.NextPage != null)
{
CurrentPage = CurrentPage.NextPage;
}
}
假设您已经实现了属性更改通知,现在每当当前页面的 NextPageCommand
或 PreviousPageCommand
执行时,CurrentPage
属性都会已更新并将反射(reflect)在 UI 中。如果您已经为每种页面 View 模型类型创建了数据模板,那么您所需要的只是
<ContentPresenter Content="{Binding CurrentPage}"/>
在您的用户控件中,您就可以开始了。
如果“下一个”/“上一个”按钮在您的控件中,而不是在页面中,则在主视图模型中实现公开 CurrentPage.NextPageCommand
和 CurrentPage.PreviousPageCommand
的属性>,并将按钮绑定(bind)到它们。
关于wpf - 如何通过仅单击用户控件中的一个按钮来更新框架的 Source 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113492/