Tema: WPF, popup
Autorius: aa
Data: 2011-01-19 14:22:40
Sveiki,
ar galetu mane kas apsviesti kaip reikia atidaryti popup'a 
wpf/silverlight aplikacijoje? Guglas kolkas normalaus sprendimo nepadejo 
rasti.
Problema su popup'u yra tame, kad StayOpen=false galimybes normaliai 
veikiancios neina padaryti. Popupa atidarineju su ToggleButton(Kaip ir 
wpf Combobox'e). Kolkas pasidariau veikianti(kreivai) sprendima:
<ToggleButton x:Name="bt1"
               Focusable="False"
               ClickMode="Release"
               IsHitTestVisible="{Binding ElementName=pop, Path=IsOpen, 
Mode=OneWay, Converter={StaticResource invertBooleanConverter}}"/>
<Popup x:Name="pop"
        IsOpen="{Binding IsChecked, ElementName=bt1}"
        PlacementTarget="{Binding ElementName=bt1}"
        StaysOpen="False"
        Focusable="False"
        PopupAnimation="Fade">
....
</Popup>

Sitam "sprendime" yra du blogi dalykai:
1. Tam, kad popupas uzsidarytu paspaudus ant ToggleButton, reik 
IsHitTestVisible priskirti false, nes kitaip popupas bus uzdaromas 
paspaudus pele ir vel atidaromas atleidus(Nelieka mouseover efektu ir 
siaip nepatinka).
2. Atlikus DragDrop'a popupe, jis neuzsidaro, nei paspaudus kitur 
aplikacijoje, o ToggleButton'as lieka disablintas.

Dar idomus dalykas yra, kad Wpf Combobox'e ToggleButton ClickMode yra 
Press(nereiktu ToggleButton IsHitTestVisible priskirti false, kai 
Popupas atidarytas), bet tada Popupas netekes focuso automatiskai 
neuzsidaro(nezinau kodel).

Tai kaip reiketu atidaryti Popup'a?