• 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

  • 相关阅读:
    测试只能干到35岁?35岁+的测试就会失业?
    12 个适合做外包项目的开源后台管理系统
    【并发】J.U.C线程池
    【408数据结构与算法】—串和BF算法(二十四)
    中级软件设计师考试(软考中级)设计模式分类及其典型特点
    注解在Java中有什么用?请给出示例
    nodejs实现jwt
    【数据库】将excel数据导入mysql数据库
    《C++ Primer》第5章 语句
    大数据入门篇
  • 原文地址:https://blog.csdn.net/m0_58717895/article/details/126974071