当前位置: 移动技术网 > IT编程>开发语言>.net > [Wpf学习] 2.代码导入Xaml

[Wpf学习] 2.代码导入Xaml

2020年03月09日  | 移动技术网IT编程  | 我要评论

动乐乐,任由爱摇摆着天平,小刘欢欢乐集结号

废话不说,直接上代码

using system.componentmodel;
using system.runtime.compilerservices;
using system.windows;
using system.windows.controls;
using system.windows.markup;

namespace l2_core_loadxaml
{
    /// <summary>
    /// interaction logic for mainwindow.xaml
    /// </summary>
    public partial class mainwindow : window
    {
        public class vm : inotifypropertychanged
        {
            public event propertychangedeventhandler propertychanged;

            public void raisepropertychanged([callermembername]  string propertyname = "")
            {
                propertychanged?.invoke(this, new propertychangedeventargs(propertyname));
            }
            private string _a;
            public string a
            {
                get => _a;
                set
                {
                    _a = value;
                    raisepropertychanged();
                }
            }
        }
        public mainwindow()
        {
            initializecomponent();
            this.datacontext = new vm() { a = "hello" };
            this.loaded += mainwindow_loaded;
        }

        private void mainwindow_loaded(object sender, routedeventargs e)
        {
            string xaml = @"
<grid xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
    <button  name=""button1"" content=""{binding a}""></button>
</grid >
";

            var rootelement = (dependencyobject)xamlreader.parse(xaml);
            this.content = rootelement;
            button button1 = (button)logicaltreehelper.findlogicalnode(rootelement, "button1");
            button1.click += (o, e) => messagebox.show("xaml loaded!");
        }
    }
}

有了这玩意,似乎打开了一扇窗——前后端真正分离?

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网