[英]What is the difference between an AutoProperty and Member
在MugenMvvmToolkit 中,使用CreateAutoProperty
与使用CreateMember
时有什么区别。 您何时使用CreateAutoProperty
与CreateMember
的示例是什么?
CreateAutoProperty
类似于 C# 中的 auto 属性,它创建 get、set 和 observe 成员,您可以在此属性更改时进行监听。
CreateMember
您可以控制您负责的设置、获取和观察方法的逻辑,您将在其中存储该成员的状态。
public class AttachedPropertySample
{
private string _autoProperty;
//this is equivalent to AttachedBindingMember.CreateAutoProperty<AttachedPropertySample, string>("AutoProperty", OnAutoPropetyChanged);
//In auto member you cannot control logic of set and get method you can also listen when this property is changed
public string AutoProperty
{
get { return _autoProperty; }
set
{
_autoProperty = value;
OnAutoPropetyChanged();
}
}
//this is equivalent to AttachedBindingMember.CreateMember<AttachedPropertySample, string>("CustomMember", (info, sample) => "My custom value", (info, sample, arg3) => CustomMemberSetter(arg3))
//In custom member you can control logic of set, get and observe methods
public string CustomMember
{
get { return "My custom value"; }
set { CustomMemberSetter(value); }
}
private void CustomMemberSetter(string value)
{
}
private void OnAutoPropetyChanged()
{
}
}
当您需要存储一些值并在此值更改时做出反应时,您可以使用CreateAutoProperty
。
这是我使用CreateAutoProperty
时的示例:
AttachedBindingMember.CreateAutoProperty<ActionBar, bool>("DisplayShowHomeEnabled", (actionBar, args) => actionBar.SetDisplayShowHomeEnabled(args.NewValue));
ActionBar
没有DisplayShowHomeEnabled
属性,我使用CreateAutoProperty
添加了它。
这是我使用CreateMember
时的示例:
AttachedBindingMember.CreateMember<IMenuItem, bool>(nameof(IMenuItem.IsVisible), (info, item) => item.IsVisible, (info, item, value) => item.SetVisible(value));
IMenuItem
已经有IsVisible
getter 和SetVisible
方法,我使用CreateMember
将它们组合起来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.