2016-05-31 110 views
1

我有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属性只执行一个。我怎样才能让它始终执行?

回答

0

这真的很奇怪的解决方案。有用。也许它应该以这种方式工作。但我认为这太复杂了。它应该更直接,代码更少。和

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来展示如何以正确的方式完成这项工作。

相关问题