gpt4 book ai didi

c# - 用于引发依赖属性 RaisePropertyChanged 事件的 MVVM 模式

转载 作者:行者123 更新时间:2023-11-30 16:59:08 25 4
gpt4 key购买 nike

我有一些只读属性,它们根据 View 模型中的同级属性返回一个值。为了将它们绑定(bind)到 XAML,我需要向同级属性添加额外的 RaisePropertyChanged 事件。这感觉有点不雅。

一个简化的例子:

public bool IsPurchased
{
get
{
return _IsPurchased;
}
set
{
if (_IsPurchased == value) return;
_IsPurchased = value;
RaisePropertyChanged("IsPurchased");
RaisePropertyChanged("IsAvailableToUse");
}
}
private bool _IsPurchased = false;

public bool IsDownloaded
{
get
{
return _IsDownloaded;
}
set
{
if (_IsDownloaded == value) return;
_IsDownloaded = value;
RaisePropertyChanged("IsDownloaded");
RaisePropertyChanged("IsAvailableToUse");
}
}
private bool _IsDownloaded = false;

public bool IsAvailableToUse
{
get
{
return IsPurchased && IsDownloaded;
}
}

有没有人有一个很好的模式可以消除贡献属性本身中的额外 RaisePropertyChanged("IsAvailableToUse") 并使此类场景更易于管理?也许在 View 模型中的一个集中位置添加这些类型的映射。

最佳答案

看看这个https://github.com/steinborge/ProxyTypeHelper .它会执行您的 MVVM/WPF 并自动连接 propertychangedevents。所以你的例子会像这样:

    public bool IsDownloaded {get;set;}
public bool IsPurchased { get; set; }

[LinkToProperty("IsDownloaded")]
[LinkToProperty("IsPurchased")]
public bool IsAvailableToUse
{
get
{
return IsPurchased && IsDownloaded;
}
}

[LinkToCommand("PurchaseCommand")]
private void btnPurchase()
{
}

[LinkToCommand("DownloadCommand")]
private void btnDownload()
{
}

关于c# - 用于引发依赖属性 RaisePropertyChanged 事件的 MVVM 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com