我看到了 MUV 的写法,发现其实默认 WPF 也是支持了大部分了,小部分还不支持的需要改一下 WPF 框架,反正现在 WPF 框架也开源了,我也算是 WPF 框架的开发者,也能构建发布自己的版本

本文的内容不需要使用德熙发布的版本,而是默认的 WPF 就可以支持了,写出的效果如下

            var border = new Border()
            {
                Background = Brushes.Gray,
                Width = 100,
                Height = 100,
                Child = new Grid
                {
                    Children =
                    {
                        new StackPanel()
                        {
                            Orientation = Orientation.Horizontal,
                            VerticalAlignment = VerticalAlignment.Bottom,
                            Margin = new Thickness(10, 10, 10, 10),
                            Children =
                            {
                                new Button
                                {

                                }.Do(b => { b.Click += Foo_Click; })
                            }
                        }
                    }
                }
            };

在 C# 写界面代码的时候会遇到的问题是事件的监听等问题,本文主要是解决事件监听的问题,写法很简单,添加下面这个辅助方法

    public static class UIInitExtensions
    {
        public static Button Do(this Button button, Action<Button> action)
        {
            action(button);
            return button;
        }
    }

注意的点是扩展方法需要返回自身,这样才能在后台代码写


本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/WPF-%E9%80%9A%E8%BF%87%E8%BE%85%E5%8A%A9%E6%96%B9%E6%B3%95%E5%9C%A8-csharp-%E4%BB%A3%E7%A0%81%E5%86%99%E5%87%BA-XAML-%E7%95%8C%E9%9D%A2%E6%95%88%E6%9E%9C.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系