2016-05-31 127 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來展示如何以正確的方式完成這項工作。

相關問題