WINUI 3.0 - 缺少 WeakEventManager

问题描述 投票:0回答:0

我在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
}
c# xaml mvvm winui-3 weakeventmanager
© www.soinside.com 2019 - 2024. All rights reserved.