сделать сетку данных видимой при клике - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть эта сетка данных, куда я помещаю все свои кнопки

<Grid x:Name="ButtonGrid" HorizontalAlignment="Left" Margin="0,90,0,4" Width="186">
   <Button x:Name="B1" Content="B1" Height="18" Margin="73,0,59,16" VerticalAlignment="Bottom" Click="B1"/>
   <Button x:Name="B2" Content="B2" Height="18" Margin="0,0,-2,16" VerticalAlignment="Bottom" Click="B2_Click" HorizontalAlignment="Right" Width="57"/>
 </Grid>

У меня при старте сетка свернута. Но когда нажимается кнопка {testGrid}, я хочу, чтобы сетка была не видна. Вот мой код

   namespace project.Test
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
            }

EDUTED

        private void testGrid_Click(object sender, System.Windows.RoutedEventArgs e)
        {
             FrameworkElement ButtonGrid = (sender as FrameworkElement).FindName("ButtonGrid") as FrameworkElement;

    if ( ButtonGrid.Visibility == System.Windows.Visibility.Collapsed)
        ButtonGrid.Visibility = System.Windows.Visibility.Visible;
    else
        ButtonGrid.Visibility = System.Windows.Visibility.Collapsed;

        }



    }
}

1 Ответ

1 голос
/ 09 ноября 2011

Я думаю, что если вы переместите Grid за пределы вашего DataTemplate, это сработает.:)

Однако, если вам действительно нужно поместить его в DataTemplate, пока ваш Button находится на том же уровне, что и Grid, вы все равно сможете его найти.

Скажем, ваш xaml-код выглядит следующим образом:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="controlstoryboardactionrefissue.MainPage" Width="640" Height="480">
    <UserControl.Resources>
        <DataTemplate x:Key="DataTemplate1">
            <Grid x:Name="myGrid" Height="128" Background="#FFE7C0C0" Width="333">
                <Button x:Name="myButton" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="31,29,0,0" Click="myButton_Click" />
            </Grid>
        </DataTemplate>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <ContentControl HorizontalAlignment="Left" VerticalAlignment="Top" Margin="175,198,0,0" ContentTemplate="{StaticResource DataTemplate1}" />
    </Grid>
</UserControl>

Тогда код позади,

    private void myButton_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        var myButton = (Button)sender;

        var grid = myButton.Parent as Grid;

        if (grid != null)
        {
            // do stuff
        }
    }

Надеюсь, это поможет.:)

...