gpt4 book ai didi

wpf - 如何通过仅单击用户控件中的一个按钮来更新框架的 Source 属性?

转载 作者:行者123 更新时间:2023-12-04 06:25:18 26 4
gpt4 key购买 nike

我想了解如何根据点击次数仅单击一个“下一步”按钮来更新源属性,并且每次单击该按钮时能够将不同的页面加载到框架中。任何建议都非常感谢!先感谢您。

主窗口代码:

<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>

最佳答案

创建 PageViewModel实现 NextPageCommand 的类和 PreviousPageCommand命令,分别引发 UserNavigatedToNextPageUserNavigatedToPreviousPage事件。为了简单起见,也让他们公开NextPagePreviousPage PageViewModel 类型的属性.创建 PageViewModel 的子类对于每一页。

为拥有的 UserControl 创建一个 View 模型类暴露了 CurrentPage PageViewModel 类型的属性.创建所有 PageViewModel对象和集合 NextPagePreviousPage在每一个上。为这些对象上的导航事件添加处理程序,如下所示:

public void Page_UserNavigatedToNextPage(object sender, EventArgs e)
{
if (sender == CurrentPage && CurrentPage.NextPage != null)
{
CurrentPage = CurrentPage.NextPage;
}
}

假设您已经实现了属性更改通知,现在只要当前页面的 NextPageCommandPreviousPageCommand执行, CurrentPage属性将被更新并反射(reflect)在 UI 中。如果您为每种页面 View 模型类型创建了一个数据模板,那么您只需要
<ContentPresenter Content="{Binding CurrentPage}"/>

在您的用户控制中,您就可以开始了。

如果 Next/Previous 按钮在您的控件中,而不是在页面中,则在主视图模型中实现属性以公开 CurrentPage.NextPageCommandCurrentPage.PreviousPageCommand ,并将按钮绑定(bind)到它们。

关于wpf - 如何通过仅单击用户控件中的一个按钮来更新框架的 Source 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com