隐藏按钮的弹出窗口

时间:2015-11-06 18:52:35

标签: c# .net xaml

我为项目获取了 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”< / EM> )。

我尝试在代码背后执行此操作,如:

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 强制转换为 Flyout ,我得到强制转换异常,所以我想这不是我想要的方式。 我怎么能隐藏这个弹出窗口?

1 个答案:

答案 0 :(得分:0)

我通过在页面上创建全局 DependencyObject 解决了这个问题。因此,当您单击按钮时,它会保留它,我可以在此弹出窗口中从按钮调用其弹出窗口 hide()。有点难看,但就像一个魅力。