2015-11-06 7 views
0

Я получил мой DataTemplate для деталей и в этом DataTemplate У меня есть такой код:Скрытие выпадающей кнопки

<Button x:Name="DoneButton" 
    Style="{StaticResource ButtonStyle1}" 
    BorderThickness="1" 
    Margin="0,0,20,0" 
    HorizontalAlignment="Left" 
    VerticalAlignment="Center" 
    Grid.Column="2" 
    Grid.Row="1" 
    Width="50" 
    Height="50" 
    > 
    <Image Source="Images/WPIcons/checked.png" Width="30" Height="30" Margin="-10,0,-10,0" /> 
      <Button.Flyout> 
       <Flyout x:Name="myFly"> 
        <Grid Margin="10"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="Auto" /> 
         </Grid.RowDefinitions> 
         <TextBlock Grid.Row="0" x:Uid="myNote" Text="Note: " Style="{StaticResource myText}" /> 
         <TextBox Grid.Row="1" TextWrapping="Wrap" AcceptsReturn="True" Height="40" x:Name="note" Text="{Binding RecentNote, Mode=TwoWay}" Style="{StaticResource TextBoxStyle1}"/> 
         <Button x:Name="CompletedButton" 
             Command="{Binding CompletedCommand}" 
             CommandParameter="{Binding}" 
             Style="{StaticResource ButtonStyle1}" 
             BorderThickness="1" 
             HorizontalAlignment="Left" 
             VerticalAlignment="Center" 
             Grid.Row="2" 
             Click="CompletedButton_Click" 
             Content="Done" 
             MinWidth="80" 
             Height="40" 
             /> 
        </Grid> 
       </Flyout> 
     </Button.Flyout> 
</Button> 

После выпадающей для элемента была вызвана и пользователь хранит свои данные в нем Я хочу скрыть это всплывающее окно, как только пользователь нажимает кнопку «Готово» (x: Name = "CompletedButton").

Я попытался сделать это в коде, как:

private void CompletedButton_Click(object sender, RoutedEventArgs e) 
{ 
    Button button = (Button)sender; 
    Grid grid = (Grid)VisualTreeHelper.GetParent(button); 
    Flyout fly = (Flyout)VisualTreeHelper.GetParent(grid); 
    fly.Hide(); 
} 

Но я извергаюсь исключением с этим я не могу бросить ContentPresenter к выпадающей так что я предполагаю, что это не так, как я смотрю на , Как я могу скрыть это всплывающее окно?

ответ

0

Я разрешил его с созданием глобального DependencyObject на странице. Поэтому, когда вы нажимаете кнопку, она сохраняет его, и я могу вызвать его всплывающее окно до hide() с помощью кнопки в этом всплывающем окне. Немного уродливый, но работает как шарм.

Смежные вопросы