属性不会被触发第二次
问题描述:
我有4个多边形属性不会被触发第二次
...
xmlns:cm="http://www.caliburnproject.org"
...
<Polygon cm:Message.Attach="
[Event MouseEnter] = [Action OnMouseEnter($eventArgs)];
[Event MouseLeave] = [Action OnMouseLeave($eventArgs)];
[Event MouseDown] = [Action OnMouseDown($eventArgs)]">
<Polygon.ToolTip>
<ToolTip Visibility="{Binding Path=TooltipVisibility}" >
...
在我的画布。
TooltipVisibility代码:
public string TooltipVisibility {
get {
if (OtherObject.IsTooltipVisibility) {
return "Visible";
}
else {
return "Hidden";
}
}
}
而且IsTooltipVisibility上OtherObject从第三名改变。我试图执行NotifyOfPropertyChange(() => myObject.TooltipVisibility);
,我试过运行NotifyOfPropertyChange(() => otherObject.IsTooltipVisibility);
。
有趣的是,如果我将鼠标悬停在一个多边形上,它会显示工具提示,然后将IsTooltipVisibility(通过点击菜单栏中的菜单按钮)更改为false,但不显示工具提示第二个多边形,但仍然显示在第一个。第三个不会显示工具提示。变成真,第四个会显示,但是,第二个和第三个不会。
TooltipVisibility属性只执行一个。我怎样才能让它始终执行?
答
这真的很奇怪的解决方案。有用。也许它应该以这种方式工作。但我认为这太复杂了。它应该更直接,代码更少。和
public void SetTooltipVisibility(bool toShowTooltip) {
if (toShowTooltip) {
_tooltipVisibility = "Visible";
}
else {
_tooltipVisibility = "Hidden";
}
NotifyOfPropertyChange(() => TooltipVisibility);
}
private string _tooltipVisibility = "Visible";
public string TooltipVisibility {
get {
return _tooltipVisibility;
}
}
,而不是只设置一个标志
OtherObject.IsTooltipVisibility = true;
额外我需要
liistOfMyObjects.Apply(o=>o.SetTooltipVisibility(OtherObject.IsTooltipVisibility));
不是最好的解决方案。
我在等待PRO来展示如何以正确的方式完成这项工作。