1

我在 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
}
4

0 回答 0