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


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

    1. FrameworkElement.DataContext 属性
            // 摘要:
            //     获取或设置元素参与数据绑定时的数据上下文。
            //
            // 返回结果:
            //     要用作数据上下文的对象。
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            [Localizability(LocalizationCategory.NeverLocalize)]
            public object DataContext { get; set; }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

    1. UserControl 绑定ViewModel
      UserControl做为子窗口,在父窗口中进行加载数据
      在这里插入图片描述
      主窗口的ViewModel中,把usercontrol的view与其对应的ViewModel进行绑定
            /// 
            /// DataContext
            /// 
            private DelegateCommand _btPersonalInfoCommand;
            public DelegateCommand BtPersonalInfoCommand => _btPersonalInfoCommand ?? (_btPersonalInfoCommand = new DelegateCommand(ExecuteBtPersonalInfoCommand));
    
            private void ExecuteBtPersonalInfoCommand()
            {
                PersonalInfo = _container.Resolve<PersonalInfoViewModel>();
                PersonalInfo.GetPersonInfo();
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    进行数据加载,并把数据显示到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";
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

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

  • 相关阅读:
    数据结构-作业6
    内网穿透frp简单安装
    前端工程师的vue面试题笔记
    上周热点回顾(4.8-4.14)
    什么是媒体邀约?邀请媒体的流程
    单数据改多数据导致,LinkedHashMap读取视图数据出错
    银行基于云原生架构下的 DevOps 建设实践经验
    PlantUML基础使用教程
    图像的放缩与插值&图像归一化&直方图&图像卷积&高斯模糊
    java毕业设计奖助学金评审(附源码、数据库)
  • 原文地址:https://blog.csdn.net/m0_58717895/article/details/126974071