2016-05-31 5 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 изменяется с 3-го места. Я попытался выполнить NotifyOfPropertyChange(() => myObject.TooltipVisibility);, я попробовал запустить NotifyOfPropertyChange(() => otherObject.IsTooltipVisibility);.

Смешная (правда, не совсем) вещь заключается в том, что если я наведите указатель мыши на один полигон, он отобразит всплывающую подсказку, а затем измените значение IsTooltipVisibility (нажав кнопку меню в строке меню) на false, это не отображает подсказку второй многоугольник, но все же показывает его на первом. Третий не отображает всплывающую подсказку. Измените на true, четвертый покажет, однако, 2-й и 3-й не будет.

Свойство 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, чтобы показать, как это должно быть сделано в правильном порядке.