WPF【二】基于MVVM模式,通过点击按钮(RadioButton)实现主页面显示不同的UserControl

这篇具有很好参考价值的文章主要介绍了WPF【二】基于MVVM模式,通过点击按钮(RadioButton)实现主页面显示不同的UserControl。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果展示

启动程序主页面

wpf radiobutton 事件,wpf,c#,ui

点击Main按钮,在按钮下方指定区域显示对应的UserControl界面

效果图

wpf radiobutton 事件,wpf,c#,ui

此功能需要用到的类包以及版本,如下图所示

wpf radiobutton 事件,wpf,c#,ui文章来源地址https://www.toymoban.com/news/detail-754723.html

具体实现流程

  • 一、UI界面的按钮绑定对应的命令【Command】以及命令参数【CommandParameter】
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="0, -10, 0, 0" HorizontalAlignment="Left">
	<RadioButton IsChecked="True" Template="{StaticResource RadioButtonTemplate}" 
	             Margin="0" Height="35" Width="100" 
	             Background="{x:Null}" BorderBrush="{x:Null}" 
	             HorizontalAlignment="Center" VerticalAlignment="Center"
	             CommandParameter="MainView" 
	             Command="{Binding ShowViewCommand}" >
	    <TextBlock  Text="Main" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
	</RadioButton>
	<RadioButton Template="{StaticResource RadioButtonTemplate}"
	             Margin="10, 0, 0, 0" Height="35" Width="100" Background="{x:Null}" 
	             BorderBrush="{x:Null}" HorizontalAlignment="Center" 
	             VerticalAlignment="Center"
	             CommandParameter="VisionView" 
	             Command="{Binding ShowViewCommand}">
	    <TextBlock Text="VIsion" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center"/>
	</RadioButton>
</StackPanel>
  • 二、

    UI【代码】通过内容去绑定需要显示的UserControl页

<Grid Grid.Row="2" Background="#FF0B0E90">
	<ContentPresenter Content="{Binding CurrentUserControl}"/>
</Grid>
  • 三、

    编写对应的ViewModel.cs文件实现对应的功能,注意:代码中SecondWindow以及FirstPageView两个类是需要用户鼠标右键点击添加【新建项目】选择【用户控件(Windows窗体)】创建对应的SecondWindow以及FirstPageView名称。

      • 【代码】
internal class MainViewModel : ViewModelBase
{
    //字段
    private UserControl m_CurrentUserControl;

    //属性
    public UserControl CurrentUserControl
    {
        get { return m_CurrentUserControl; }
        set
        {
            m_CurrentUserControl = value;
            //通知UI界面属性修改信号
            RaisePropertyChanged(nameof(CurrentUserControl));
        }
    }

    private UserControl m_mainFrameElement;

    private UserControl m_visionFrameElement;

    public RelayCommand<string> ShowViewCommand
    { 
        get; 
    }

    public MainViewModel()
    {
        ShowViewCommand = new RelayCommand<string>(ShowCurrentContent);
    }

    //1根据ui的属性判断,content接收UI属性CommandParameter值
    //2实例化对应CommandParameter值的UserControl用户窗体对象
    public void ShowCurrentContent(string content)
    {
        if (content.Equals("VisionView"))
        {
            if (m_visionFrameElement == null) m_visionFrameElement = new SecondWindow();

            CurrentUserControl = m_visionFrameElement;
        }
        else if (content.Equals("MainView"))
        {
            if (m_mainFrameElement == null) m_mainFrameElement = new FirstPageView();

            CurrentUserControl = m_mainFrameElement;
        }
    }
}
  • 四、

    在主窗体【MainWindow】的构造函数中添加数据获取和修改的数据上下文

    • 【代码】
public MainWindow()
{
     InitializeComponent();
     this.DataContext = new MainViewModel();
}

到了这里,关于WPF【二】基于MVVM模式,通过点击按钮(RadioButton)实现主页面显示不同的UserControl的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3中如何实现通过点击不同的按钮切换不同的页面

    完成以上需求,我们可以使用vue中的component标签来实现。 component是Vue.js中一个特殊的标签,用于动态地绑定其它组件。它可以与v-bind:is指令一起使用,来决定要渲染哪个组件。下面是示例代码

    2024年02月09日
    浏览(53)
  • 【UE4】 通过按钮点击实现摄像机的切换 并通过鼠标控制新摄像机的旋转

    首先创建了4个Actor蓝图类 每个蓝图类内只拥有一个摄像机组件 将每个actor蓝图类摆放到场景的合适位置 在关卡蓝图中创建自定义事件,当该事件触发时切换摄像机 创建一个控件蓝图,在控件蓝图中创建如下5个按钮,并创建点击事件。按钮分别表示车上的4个镜头和车外自由

    2023年04月09日
    浏览(56)
  • C# WPF简单的MVVM模式事例

    WPF中使用MVVM模式开发有诸如以下优点: 1.结构清晰明朗,上手成本低,一个新人也能快速的定位自己需要改动代码的位置。 2.耦合度低,更改WPF控件不影响数据结构,更改代码成本低。 3.可重用性高,比如一个处理逻辑放到ViewModel模块中,其他界面如果要用掉直接调用即可。

    2024年02月09日
    浏览(47)
  • WPF 项目中 MVVM模式 的简单例子说明

    MVVM 是 Model view viewModel 的简写。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面清晰分离。 几个概念的说明: model :数据,界面中需要的数据,最好不要加逻辑代码 view : 视图就是用户看到的UI结构 xaml 文件 viewModel : 业务逻辑代码 绑定器:声明性数据和命令绑定隐含在

    2024年02月11日
    浏览(31)
  • WPF新境界:MVVM设计模式解析与实战

    了解MVVM设计模式在WPF开发中的应用,通过分离模型、视图和视图模型,构建清晰可维护的用户界面。实例展示了如何利用XAML、ViewModel和数据绑定创建可测试的界面逻辑。

    2024年02月19日
    浏览(37)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配

    在WPF应用端开发,它的界面类似于Winform端,因此我们也需要对系统的菜单进行动态配置,这样才能把系统的功能弹性发挥到极致,通过动态菜单的配置方式,我们可以很容易的为系统新增所需的功能,通过权限分配的方式,可以更有效的管理系统的菜单分配到不同的角色用户

    2024年02月08日
    浏览(95)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现DataGrid数据的导入和导出操作

    在我们设计软件的很多地方,都看到需要对表格数据进行导入和导出的操作,主要是方便客户进行快速的数据处理和分享的功能,本篇随笔介绍基于WPF实现DataGrid数据的导入和导出操作。 在我们实现数据的导入导出功能之前,我们在主界面需要提供给客户相关的操作按钮,如

    2024年02月08日
    浏览(57)
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(8) -- 使用Converter类实现内容的转义处理

    在我们WPF应用端的时候,和WInform开发或者Vue前端开发一样,有时候也需要对内容进行转义处理,如把一些0,1数值转换为具体含义的文本信息,或者把一些布尔变量转换为是否等,都是常见的转换处理,本篇随笔介绍在WPF应用端对内容使用Converter类实现内容的转义处理的操作。

    2024年02月08日
    浏览(43)
  • WPF ListView MVVM模式下数据增加自动滚动到底部

    ListView 设置SelectedIndex属性不会滚动界面,只能通过ScrollIntoView方法设置,所以使用触发器检测 SelectedIndex ,使用扩展属性定义SelectedIndex的行为 手动引入 System.Windows.Interactivity Microsoft.Expression.Interactions xmal中添加声明

    2024年02月14日
    浏览(37)
  • 基于easyx和C++实现的鼠标交互界面(点击按钮)| 系统设计

    实现效果一览: 当鼠标放上去后效果: 代码实现及详解: 欢迎讨论!

    2024年04月27日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包