WinUI 3中,几乎所有与Fluent Design样式的控件,都是通过资源字典(ResourceDictionary
)中的样式(Style
)来指定的。这就为我们自定义控件的样式提供了可能。
更好的消息是在WASDK1.4后的版本里,样式部分已经全面开源了,就在github的microsoft-ui-xaml仓库中。
2024年10月22日大约 2 分钟
WinUI 3中,几乎所有与Fluent Design样式的控件,都是通过资源字典(ResourceDictionary
)中的样式(Style
)来指定的。这就为我们自定义控件的样式提供了可能。
更好的消息是在WASDK1.4后的版本里,样式部分已经全面开源了,就在github的microsoft-ui-xaml仓库中。
使用MVVM框架时,属性的赋值顺序一直都是令人头疼的点。
一方面希望参数赋值一步到位,以减少OneWay
绑定的使用;
另一方面若顺序搞错了,后果轻则属性获得空值,可能需要触发PropertyChanged
才能更新,
重则直接调用了null
成员,直接导致程序崩溃。
所以本文我们通过实验的方法进行探讨,XAML的赋值顺序和事件的触发顺序是什么样的。
首先我们需要明确,到底有多少内容需要分析。经过整理,得到以下内容:
事件和方法:
微软的许多XAML框架,如WPF、UWP、WinUI3等,在DataTemplate
下都会遇到变量隐藏(Variable shadowing)的问题。为了访问外部实例成员,经常需要写很多曲折的代码,但也没有办法。本文也无法解决这个问题,但记录了我知道的方法,以便在各种情况使用,争取将可读性的影响降到最低。
按照需求创建了一个Page
:
public sealed partial class SamplePage : Page
{
public string OuterMember { get; set; } = "OuterMember";
public SamplePage()
{
ViewModels = new ViewModel[] { new("a"), new("b"), new("c"), };
InitializeComponent();
}
public ViewModel[] ViewModels { get; }
}
public class ViewModel(string text)
{
public string Text { get; set; } = text;
}