首页 > 其他分享 >wpf_绑定两个ViewModel

wpf_绑定两个ViewModel

时间:2024-01-25 20:35:36浏览次数:37  
标签:绑定 string AccountModel ViewModel public Music UserModel wpf Juster

Juster.Music\MainWindow.xaml.cs


namespace Juster.Music
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            // 设置整个窗口的DataContext,这里假设全局有一个RootViewModel包含了所有子ViewModel
            DataContext = new RootViewModel();
        }

        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            string a = TxtA.Text;
            string p = TxtP.Text;
            MessageBox.Show(a);
            MessageBox.Show(p);
        }
    }
}

Juster.Music\MainWindow.xaml

<Window
    x:Class="Juster.Music.MainWindow"
    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:local="clr-namespace:Juster.Music"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>

        <StackPanel HorizontalAlignment="Center" Orientation="Horizontal" >
            <TextBlock
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Text="账号1:" />

            <!-- 绑定 AccountModel-->
            <TextBox
                Name="TxtA"
                Width="300"
                Height="30"
                Text="{Binding AccountModel.Account}" />
        </StackPanel>

        <StackPanel
            Grid.Row="1"
            HorizontalAlignment="Center"
            Orientation="Horizontal"
            >
            <TextBlock
                HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Text="账号2:" />

            <!-- 绑定 UserModel-->
            <TextBox
                Name="TxtP"
                Width="300"
                Height="30"
                Text="{Binding UserModel.Username }"></TextBox>

        </StackPanel>

        <Button
            Name="BtnLogin"
            Grid.Row="3"
            Width="200"
            Height="30"
            Click="BtnLogin_Click"
            Content="Login" />


    </Grid>
</Window>

根Model

Juster.Music\RootModel.cs

using Juster.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Juster.Music
{
    public class RootViewModel
    {
        private AccountModel _accoutModel;
        private UserModel _userModel;

        public AccountModel AccountModel { get => _accoutModel; set => _accoutModel = value; }
        public UserModel UserModel { get => _userModel; set => _userModel = value; }
        public RootViewModel()
        {
            // 初始化两个子Model
            AccountModel = new AccountModel();
            UserModel = new UserModel();
        }

    }
}


两个子Model

Juster.Music\AccountModel.cs

namespace Juster.Music
{
    public class AccountModel
    {
        private string _account;

        public string Account
        {
            get { return _account; }
            set
            {
                _account = value;
            }
        }


        public AccountModel()
        {
            Account = "root";

        }
    }
}


Juster.Music\UserModel.cs

namespace Juster.Music
{
    public class UserModel
    {
        private string _username;

        public string Username
        {
            get { return _username; }
            set 
            { 
                _username = value;
            }
        }

        public UserModel() 
        {
            Username = "admin";
        }
    }
}


标签:绑定,string,AccountModel,ViewModel,public,Music,UserModel,wpf,Juster
From: https://www.cnblogs.com/zhuoss/p/17988093

相关文章

  • 基于CefSharp、WPF开发浏览器项目----系列文章
    基于CefSharp、WPF开发浏览器项目基于CefSharp开发浏览器(十一)增添F11、F12功能基于CefSharp开发浏览器(十)CefSharp.Wpf中文输入法偏移处理基于CefSharp开发浏览器(九)浏览器历史记录弹窗面板基于CefSharp开发浏览器(八)浏览器收藏夹栏基于CefSharp开发浏览器(七)浏览器收藏夹菜单基......
  • 31动态绑定的时机
    动态绑定的时机在类的构造函数中调用的任何(虚)函数,都不会发生动态绑定。如果不是通过指针或引用调用虚函数,也还是静态绑定。classBase{public: Base(intdata=10):ma(data){cout<<"Base"<<endl;} virtual~Base(){cout<<"~Base"<<endl;} virtualv......
  • 29虚函数-静态绑定-动态绑定
    虚函数-静态绑定-动态绑定如果类中定义了虚函数,那么编译阶段,编译器会给这个类类型产生一个唯一的vftable虚函数表,其中主要存储的是RTTI指针和虚函数的地址。程序运行时,每一张虚函数表都会加载到内存的.rodata只读数据区。一个类中定义了虚函数,那么这个类的对象,其运行时,内存中开......
  • 基于CefSharp开发浏览器(十)浏览器CefSharp.Wpf中文输入法偏移处理
    一、前言两年多来未曾更新博客,最近一位朋友向我咨询中文输入法问题。具体而言,他在使用CefSharpWPF版本时遇到了一个问题,即输入法突然出现在屏幕的左上角。在这里记录下处理这个问题的过程,希望能够帮助到其他遇到类似问题的开发者。让我们一起来探讨如何解决能更好的处理CefSharp......
  • FluentValidation在C# WPF中的应用
    1.引言在.NET开发领域,FluentValidation以其优雅、易扩展的特性成为开发者进行属性验证的首选工具。它不仅适用于Web开发,如MVC、WebAPI和ASP.NETCORE,同样也能完美集成在WPF应用程序中,提供强大的数据验证功能。本文将深入探讨如何在C#WPF项目中运用FluentValidation进行属性验......
  • WPF动态绑定隐藏或显示DataGrid一列(转)
    原文连接一、添加一個FrameworkElement的代理<Window.Resources><FrameworkElementx:Key="ProxyElement"DataContext="{Binding}"/></Window.Resources> 二、用一個不可見的ContentControl綁定上一步的FrameworkElement代理<ContentControlV......
  • WPF UI线程卡顿的一些理解
    WPFMVVM模型中线程分为UI线程(主线程)和其他线程(新建的线程)UI线程主要工作:1、负责响应外部的输入事件2、负责渲染UI界面,包括绘图、动画等其他线程:1、负责进行数据采集处理2、负责进行消息的分发 实际的工作中我们要合理使用线程,特别是大量的数据展示,图表动画渲染。不然很......
  • dotnet wpf 点击事件
    secs_wpf\MainWindow.xaml.csusingSystem.Text;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;usi......
  • wpf第九个画面
    主要使用的控件:Grid控件、TabControl控件、DataGrid控件、Button控件、TextBlock控件、TextBox控件 公共属性 HorizontalAlignment:水平显示位置 VerticalAlignment:垂直显示位置 Weight:宽度 Height:高度  Grid控件关键属性:ColumnDefinitions和RowDefinitions,......
  • WPF动画
    1、DoubleAnimationprivatevoidRunAnimation(UIElementelement,DependencyPropertydp,doubleoldValue,doublenewValue,doubledurationMs){varduration=newDuration(TimeSpan.FromMilliseconds(durationMs));vardoubleAnima......