2010-07-03 5 views
0

두 개의 컨트롤이 타원과 팝업으로 있습니다. 아이디어는 뷰 모델의 IsDirty 속성이 true 인 경우에만 두 컨트롤이 모두 표시된다는 것입니다. 그렇다면 타원은 동일한 뷰 모델 IsValid 인 경우 녹색이고 그렇지 않은 경우 빨간색입니다. 사용자가 팝업 위에 마우스를 올려 놓으면 팝업이 메시지를 표시합니다.팝업 트리거가 예상대로 작동하지 않습니다.

팝업에 대한 내용과 바인딩이 정확하므로 아래 코드와 같이 자체 스타일로 트리거를 사용하여 IsOpen 여부를 제어 할 수 있어야하는지 궁금합니다.

건배,
Berryl

<Popup x:Name="dirtyPopup" AllowsTransparency="True" > 
    <Popup.Style> 
     <Style TargetType="Popup"> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="IsOpen" Value="{Binding IsDirty}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Popup.Style> 
    <Grid content goes here /> 
</Popup> 

답변

1

나는 당신이 팝업에 IsMouseOver에 바인딩 할 생각하지 않습니다. 마우스가 Popup 윈도우 자체 위에있을 경우에만 해당됩니다. Popup 윈도우가 이미 열려있는 경우에만 발생할 수 있으므로 처음에는 열 수 없습니다.

마우스가 타원과 같은 다른 컨트롤 위에 있으면 팝업을 열 수 있습니다. 가장 쉬운 방법은 ToolTip입니다. Ellipse에서 ToolTip 속성을 설정하면 마우스가 Ellipse 위에있을 때 툴팁 팝업 창이 표시됩니다. 다음과 같은 것 :

<Ellipse> 
    <Ellipse.ToolTip> 
     <Grid content goes here /> 
    </Ellipse.ToolTip> 
</Ellipse> 
+0

오 예 - 감사합니다! – Berryl

+0

하지만 사용자가 콘텐츠의 일부로 클릭 할 수있는 하이퍼 링크를 표시하려면 팝업이 필요합니까? 그렇다면 어떻게해야하는지에 대한 조언이 있습니까? – Berryl

관련 문제