2013-07-09 35 views
3

我使用下面的代碼片斷來定義Popup。Popup不關閉事件直接打開設置爲False

代碼片段[XAML]:

<Grid Margin="0,0,0,0" Height="40">  
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="19" /> 
     <ColumnDefinition Width="19" /> 
    </Grid.ColumnDefinitions> 

    <TextBlock HorizontalAlignment="Stretch" 
       Text="HeaderText"       
       FontWeight="Bold" 
       TextTrimming="CharacterEllipsis" 
       VerticalAlignment="Center"/> 
     <Grid Grid.Column="1"> 
     <Button Width="19" x:Name="FilterButton" Click="FilterButton_OnClick" Content="^"/> 
     <Popup x:Name="FilterPanel" StaysOpen="False" > 
      <Border > 
      <Grid> 
       <TextBlock x:Name="tblTitle" Text="PopUp Header" Background="Red" Grid.Column="0" Grid.Row="0"/> 
      </Grid> 
      </Border> 
     </Popup> 
     </Grid> 
    <TextBox Text="Test" Grid.Column="2"/> 
    </Grid> 

我使用下面的代碼片段來打開彈出

代碼片段[C#]:

private void FilterButton_OnClick(object sender, RoutedEventArgs e) 
{ 
    this.FilterPanel.IsOpen = true; 
} 

Scenorio:

使用按鈕單擊打開彈出窗口。

按Tab鍵。

焦點移動到文本框。

實際Behavvior:

彈出窗口不會關閉。

預期的行爲:

Popup應該關閉。

爲了您的參考,我附上了一個簡單的樣本。請您仔細閱讀本文,並提供指導來歸檔我的要求。提前致謝。

+0

難道你只是手動關閉彈出文本框gaines重點? – Vale

+0

謝謝您的回覆,我無法正確獲得彈出框的丟失焦點或Tetbox的焦點。 – Raja

+0

嘗試TextBox上的GotKeyboardFocus事件。 – Vale

回答

0

這很奇怪。我把你的代碼粘貼到一個新的項目窗口中,並且每次都會關閉。但是我記得當我想創建自己的自定義控件時,我遇到了類似的問題。我知道其中一件事是將StaysOpen設置爲false。這我看你已經完成了。另一種是嘗試當FilterPanel初始化

FilterPanel.IsMouseCaptureWithinChanged +=FilterPanel_IsMouseCaptureWithinChanged; 

void FilterPanel_IsMouseCaptureWithinChanged(object sender, DependencyPropertyChangedEventArgs e) 
    { 
     if (!(bool)e.NewValue) 
     { FilterPanel.IsOpen = false; } 
    } 

正如我說我的代碼工作完美,當我複製你的代碼中設置以下,所以我不能測試,但上面的應該工作。

+0

謝謝你的幫助 – Raja

+0

沒問題......它解決了你的問題嗎? – DaClan

+0

是的,它解決了我的問題 – Raja