WPF父窗口中的UserControl 使用DataContext 绑定对应的ViewModel

代码下载地址:https://github.com/kuku2504/SummarySolution

  1. FrameworkElement.DataContext 属性
        // 摘要:
        //     获取或设置元素参与数据绑定时的数据上下文。
        //
        // 返回结果:
        //     要用作数据上下文的对象。
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [Localizability(LocalizationCategory.NeverLocalize)]
        public object DataContext { get; set; }
  1. 属性值

Object要用作数据上下文的对象。
属性LocalizabilityAttribute

    <Window.Resources>
        <s:String x:Key="Change">button的内容</s:String>
    </Window.Resources>
    <Grid>
        <Button Width="288" Height="38" Content="{DynamicResource Change}"></Button>
    </Grid>

在这里插入图片描述
注解
数据上下文 是一种概念,它允许元素从其父元素继承有关用于绑定的数据源的信息,以及绑定的其他特征,例如路径。

可以将数据上下文直接设置为 .NET 对象,绑定将评估为该对象的属性。 或者,可以将数据上下文设置为 DataSourceProvider 对象。

此依赖属性继承属性值。 如果没有通过本地值或样式建立的其他值的 DataContext 子元素,则属性系统会将该值 DataContext 设置为分配此值的最近的父元素的值。

  1. UserControl 绑定ViewModel
    UserControl做为子窗口,在父窗口中进行加载数据
    在这里插入图片描述
    主窗口的ViewModel中,把usercontrol的view与其对应的ViewModel进行绑定
        /// <summary>
        /// DataContext
        /// </summary>
        private DelegateCommand _btPersonalInfoCommand;
        public DelegateCommand BtPersonalInfoCommand => _btPersonalInfoCommand ?? (_btPersonalInfoCommand = new DelegateCommand(ExecuteBtPersonalInfoCommand));

        private void ExecuteBtPersonalInfoCommand()
        {
            PersonalInfo = _container.Resolve<PersonalInfoViewModel>();
            PersonalInfo.GetPersonInfo();
        }

进行数据加载,并把数据显示到UserControl中的view中

using Prism.Mvvm;

namespace _01上下文绑定.ViewModels
{
    public class PersonalInfoViewModel : BindableBase
    {
        private string unitName;
        public string UnitName
        {
            get { return unitName; }
            set { SetProperty(ref unitName, value); }
        }
        private string cloudCoinNum;
        public string CloudCoinNum
        {
            get { return cloudCoinNum; }
            set { SetProperty(ref cloudCoinNum, value); }
        }

        public PersonalInfoViewModel()
        {
        }
        public void GetPersonInfo()
        {
            UnitName = "清华MBA";
            CloudCoinNum = "265";
        }
    }
}

运行程序结果如下:
在这里插入图片描述
代码下载地址:https://github.com/kuku2504/SummarySolution

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值