我的工具提示应该显示我的程序运行了多长时间。所以我尝试在我的工具提示中添加+1,但这不起作用。 那是我的xaml代码:
<StatusBarItem >
<Image ToolTip="{Binding Path=ToolTipStatus}"/>
</StatusBarItem>
那就是我的C#代码:
private string _toolTipStatus = "0";
private string ToolTipStatus
{
get { return _toolTipStatus; }
}
private void Example()
{
_toolTipStatus = _toolTipStatus + 1;
}
答案 0 :(得分:3)
首先,在此代码中没有任何地方可以让UI猜测您的私有字段何时或是否已更改。其次,您的属性也是私有的,因此UI也无法看到它。最后,在计时器触发几次后,重复向字符串附加“1”将获得一个看起来像 <li ng-repeat="mainEvent in mainEvents" class="element home" ng-class="mainEvent.category" >
的字符串。如果这就是你想要的,那很好,但我认为可能不是。
"11111111111111111111111111111"
你不会说你是否有一个viewmodel。你不会说你的代码在哪个类或者如何(或者如果)调用它。您的所有房产都是私人的。你不会说XAML是什么样的,甚至没有。我在这里感受到一种强迫秘密的主题。您需要了解何时开放和分享。
你需要一个viewmodel,你需要它来实现public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
public class MyViewModel : ViewModelBase
{
private int _toolTipStatus = 0;
private int ToolTipStatus
{
get { return _toolTipStatus; }
protected set {
if (_toolTipStatus != value)
{
_toolTipStatus = value;
OnPropertyChanged(nameof(ToolTipStatus));
}
}
}
}
private void Example()
{
ToolTipStatus += 1;
}
。
答案 1 :(得分:0)
你应该刷新你的xaml。我认为最好的方法是从INotifyPropertyChanged继承表单。 然后像这样声明事件和raise方法
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropChanged(string name)
{
var eh = this.PropertyChanged;
if (eh != null)
{
eh(this, new PropertyChangedEventArgs(name));
}
}
然后您的属性ToolTipStatus应为:
private string toolTipStatus;
public string ToolTipStatus
{
get { return toolTipStatus; }
set
{
toolTipStatus = value;
RaisePropChanged("ToolTipStatus");
}
}