我在ViewModel
中拥有此属性private string _message;
public string Logger
{
get { return _message; }
set
{
_message = Logger.GetMessage();
Instance.OnPropertyChanged();
}
}
此属性自动设置Logger实例的值。现在我遇到了一个问题,因为要将内容分配给Label我应该这样做:
Label.Content = ViewModel.Logger;
但我只想这样打电话:
ViewModel.Logger;
因为该值是在属性内部自动设置的,所以我收到此消息的问题是:
可以仅用作指令,分配,调用,增加,减少和新表达
标签将自动更新,因为我已设置绑定:
<Label Content="{Binding Logger, IsAsync=True}" />
有什么想法吗?
答案 0 :(得分:4)
但我只想这样打电话:
ViewModel.Logger;
你不能。属性不是方法。如果您打算将属性用作方法,请改为创建方法。
您不能指望Label
设置值,因此您的整个绑定毫无意义。您可以使用该属性来获取,并使用一种方法来设置。
答案 1 :(得分:1)
如果您的XAML
是对的。您可以更改Logger
属性,如下所示:
private string _message;
public string Logger
{
get
{
if (_message == null)
{
_message = Logger.GetMessage();
}
return _message; }
set
{
_message = Logger.GetMessage();
Instance.OnPropertyChanged();
}
}
并且您不需要使用任何
Label.Content = ViewModel.Logger;
或
ViewModel.Logger;
binding
get
方法的原因将在_message
字段为null
时首次执行,您的值逻辑(GetMessage()
)将被执行并且Lable
将显示该值。