如何关闭窗口和按钮?

时间:2014-05-27 19:01:46

标签: c# wpf xaml

我这个窗口有一个“关闭”按钮。

http://oi62.tinypic.com/a40oci.jpg

当我按下“关闭”按钮时,它只隐藏蓝色窗口而不隐藏图像中的2个按钮。

我希望它隐藏一切。我已经附加了两个类的C#代码以及所有按钮的XAML代码。

  <local:KinectHoverButton Grid.Column="0" x:Name="leftbtn" Style="{StaticResource KinectHoverButtonScrollLeftStyle}" Click="PageLeftButtonClick" IsEnabled="{Binding ElementName=ControlsBasicsWindow, Path=PageLeftEnabled}"/>
  <local:KinectHoverButton Grid.Column="2" x:Name="right_btn" Style="{StaticResource KinectHoverButtonScrollRightStyle}" Click="PageRightButtonClick" IsEnabled="{Binding ElementName=ControlsBasicsWindow, Path=PageRightEnabled}"/>

隐藏按钮的方法:

public partial class ImagesGrid : UserControl
{
    public ImagesGrid()
    {
        InitializeComponent();
        leftbtn.Visibility = System.Windows.Visibility.Hidden;
        right_btn.Visibility = System.Windows.Visibility.Hidden;
    }
    public  void btn()
    {
        leftbtn.Visibility = System.Windows.Visibility.Hidden;
        right_btn.Visibility = System.Windows.Visibility.Hidden;
    }
}

隐藏SelectionDisplay窗口和调用btn方法

的方法
private void OnCloseFullImage(object sender, RoutedEventArgs e)
{
    // Always go to normal state before a transition
    this.Visibility = System.Windows.Visibility.Hidden;
    ImagesGrid img = new ImagesGrid();
    img.btn();
}

我想让按钮可见的地方

else if (button.Tag is WineModel)
{
    var wineModel = button.Tag as WineModel;
    var selectionDisplay = new SelectionDisplay(wineModel);
    this.kinectRegionGrid.Children.Add(selectionDisplay);
    leftbtn.Visibility = System.Windows.Visibility.Visible;
    right_btn.Visibility = System.Windows.Visibility.Visible;
    e.Handled = true;
}

编辑:SelectionDisplay.xaml

<UserControl x:Class="Microsoft.Samples.Kinect.ControlsBasics.SelectionDisplay"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:k="http://schemas.microsoft.com/kinect/2013"

         mc:Ignorable="d" 
         d:DesignHeight="300"
         d:DesignWidth="300"
         Background="Transparent"
         FontFamily="Segoe UI"
         FontSize="30" Loaded="UserControl_Loaded">

<UserControl.Resources>
    <Style TargetType="{x:Type TextBlock}" x:Key="labelStyle">
        <Setter Property="FontSize" Value="15"/>
        <Setter Property="Foreground" Value="Gray"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}" x:Key="valueStyle">
        <Setter Property="TextWrapping" Value="Wrap"/>
        <Setter Property="FontSize" Value="24"/>
    </Style>
</UserControl.Resources>
<!--<Grid x:Name="layoutRoot">-->
    <Grid x:Name="grid" Background="{StaticResource BlueBrush}" Width="auto">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
    <Grid Grid.Column="0">
        <Image x:Name="Display" HorizontalAlignment="Left" 
               VerticalAlignment="Center" Height="185" Width="293" Margin="50,0,10,0" Source="{Binding Image}" />
    </Grid>
    <StackPanel Grid.Column="1">
        <TextBlock Text="Origin:" Style="{StaticResource labelStyle}"/>
        <TextBlock Text="{Binding Origin}"  Style="{StaticResource valueStyle}"/>
        <TextBlock Text="Grapes" Style="{StaticResource labelStyle}"/>
        <TextBlock Text="{Binding Grapes}" Style="{StaticResource valueStyle}"/>
        <TextBlock Text="Color" Style="{StaticResource labelStyle}"/>
        <TextBlock Text="{Binding Color}" Style="{StaticResource valueStyle}"/>
        <TextBlock Text="Nose" Style="{StaticResource labelStyle}"/>
        <TextBlock Text="{Binding Nose}" Style="{StaticResource valueStyle}"/>
        <TextBlock Text="Price" Style="{StaticResource labelStyle}"/>
        <TextBlock Text="{Binding Price, StringFormat='C'}" Style="{StaticResource valueStyle}"/>
    </StackPanel>
    <Grid Grid.Column="2">
        <k:KinectCircleButton Style="{StaticResource CancelButtonStyle}" Foreground="White" Click="OnCloseFullImage"
                              VerticalAlignment="Top"/>
    </Grid>        
</Grid>
<!--</Grid>-->

1 个答案:

答案 0 :(得分:2)

此代码(来自关闭处理程序)

ImagesGrid img = new ImagesGrid();
img.btn();

创建全新&#34; ImagesGrid&#34;,然后指示它隐藏。您需要获得对现有&#34; ImagesGrid&#34;的引用。并在其上调用btn方法。

因为他们被捆绑在一起,所以我会做出#34;滚动&#34;按钮包含&#34;关闭&#34;的同一用户控件的一部分。按钮,完全避免问题。如果你真的想传递参考文献:

如果您的主要用户控件具有&#34; ImagesGrid&#34;

<local:ImagesGrid Name="ScrollButtons"/>

然后你会写:

ScrollButtons.btn();

当然,这会导致问题,因为您的其他用户控件可能无法访问&#34; ScrollButtons&#34;所以你需要传递一个引用你的&#34; View&#34; class(或ScrollButtons对象本身)在创建&#34; main&#34;用户控制等等。它变得非常混乱,这就是为什么我只想将两者结合起来!

相关问题