我有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";
}
}
}
OtherObject上的IsTooltipVisibility已从第3位更改。我尝试执行NotifyOfPropertyChange(() => myObject.TooltipVisibility );
,尝试运行NotifyOfPropertyChange(() => otherObject.IsTooltipVisibility);
。
有趣(但不是真的)的事情是,如果我将鼠标悬停在一个多边形上它显示工具提示,然后我将IsTooltipVisibility(通过点击菜单栏中的菜单按钮)更改为false,它不显示第二个工具提示多边形,但仍然在第一个上显示它。第三个不会显示工具提示。改为true,第4个将显示,但是,第2个和第3个不会。
TooltipVisibility属性只执行了一个。如何让它一直执行?
答案 0 :(得分: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));
不是最好的解决方案。
我正在等待专业人士展示如何以正确的方式完成这项工作。