我在 WINUI3 中找不到 WeakEventManger 类。
当我订阅比 ViewModel 寿命更长的模型事件时,我所有的 WPF 项目都会在视图模型中使用它。
具有长寿模型的 ViewModel 必须是一种常见的东西。
例如订阅剪贴板的短期视图模型。
WINUI3最好的评价是什么?
public class ItemViewModel : INotifyPropertyChanged
{
private string _text;
public ItemViewModel()
{
// GC collects MainViewModel, but WeakEventManager does not exist in WINUI3
//WeakEventManager<Clipboard, object>.AddHandler(Clipboard, nameof(Clipboard.ContentChanged), OnClipboardContentChanged);
// GC does not collect MainViewModel
Clipboard.ContentChanged += OnClipboardContentChanged;
}
private void OnClipboardContentChanged(object sender, object e)
{
Text = Clipboard.GetContent().GetTextAsync().AsTask().Result;
}
public string Text
{
get { return _text; }
set
{
if (_text != value)
{
_text = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Text)));
}
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}