【问题标题】:Strange issue with setting visibility collapsed in grid (c#, xaml, UWP)设置可见性在网格中折叠的奇怪问题(c#、xaml、UWP)
【发布时间】:2015-11-29 13:19:14
【问题描述】:

我正在尝试制作一个 Grid,它可以选择玩家数量(最多六个)并在 TextBoxes 中输入名称。网格下方有“+”和“-”按钮,可以添加或删除玩家(以两个开头)。一切正常,直到您添加第 6 个玩家,然后尝试减去 1 个玩家。播放器 6 文本框和名称输入文本框保持可见,替换播放器 5 的文本框。这是xml

<Grid  HorizontalAlignment="Center" VerticalAlignment="Center" Width="800" Grid.Row="1" >
            <Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

                <!--Headers-->
            <TextBlock Style="{ThemeResource HeaderTextBlockStyle}" Grid.Row="0" Grid.Column="0" Text=""/>
            <TextBlock Style="{ThemeResource HeaderTextBlockStyle}" Grid.Row="0" Grid.Column="1" Text="Name" Margin="20,0,20,0" TextAlignment="Center"/>

            <TextBlock Name="PlayerOneTag" Text="Player 1" FontSize="30" Grid.Row="1" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left"/>
            <TextBlock Name="PlayerTwoTag" Text="Player 2" FontSize="30" Grid.Row="2" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left"/>
            <TextBlock Name="PlayerThreeTag" Text="Player 3" FontSize="30" Grid.Row="3" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left" Visibility="Collapsed"/>
            <TextBlock Name="PlayerFourTag" Text="Player 4" FontSize="30" Grid.Row="4" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left" Visibility="Collapsed"/>
            <TextBlock Name="PlayerFiveTag" Text="Player 5" FontSize="30" Grid.Row="5" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left" Visibility="Collapsed"/>
            <TextBlock Name="PlayerSixTag" Text="Player 6" FontSize="30" Grid.Row="6" Grid.Column="0" Margin="0,20,40,20" TextAlignment="Left" Visibility="Collapsed"/>

            <TextBox Name="PlayerOneName" FontSize="30" Grid.Row="1" Grid.Column="1" />
            <TextBox Name="PlayerTwoName" FontSize="30" Grid.Row="2" Grid.Column="1" />
            <TextBox Name="PlayerThreeName" FontSize="30" Grid.Row="3" Grid.Column="1" Visibility="Collapsed" />
            <TextBox Name="PlayerFourName" FontSize="30" Grid.Row="4" Grid.Column="1" Visibility="Collapsed" />
            <TextBox Name="PlayerFiveName" FontSize="30" Grid.Row="5" Grid.Column="1" Visibility="Collapsed" />
            <TextBox Name="PlayerSixName" FontSize="30" Grid.Row="6" Grid.Column="1"  Visibility="Collapsed"/>

                <StackPanel Name="PlayerTwoButtons"  Grid.Row="7" Orientation="Horizontal">
                    <Button Name="AddPlayerThreeButton" Tapped="AddPlayerThree" Style="{StaticResource ResourceKey=PlusButton}" Visibility="Visible"/>
                </StackPanel>

                <StackPanel Name="PlayerThreeButtons"  Visibility="Collapsed" Grid.Row="7" Orientation="Horizontal">
                    <Button Name="MinusPlayerThreeButton" Tapped="MinusPlayerThree"  Style="{StaticResource ResourceKey=MinusButton}" />
                    <Button Name="AddPlayerFourButton" Tapped="AddPlayerFour"  Style="{StaticResource ResourceKey=PlusButton}" />

                </StackPanel>

                <StackPanel  Name="PlayerFourButtons" Visibility="Collapsed" Grid.Row="7" Orientation="Horizontal" >
                    <Button Name="MinusPlayerFourButton" Tapped="MinusPlayerFour"  Style="{StaticResource ResourceKey=MinusButton}"/>
                    <Button Name="AddPlayerFiveButton" Tapped="AddPlayerFive"  Style="{StaticResource ResourceKey=PlusButton}" />

                </StackPanel>

                <StackPanel Name="PlayerFiveButtons" Grid.Row="7" Orientation="Horizontal" Visibility="Collapsed">
                    <Button Name="MinusPlayerFiveButton" Tapped="MinusPlayerFive"  Style="{StaticResource ResourceKey=MinusButton}" />
                    <Button Name="AddPlayerSixButton" Tapped="AddPlayerSix"  Style="{StaticResource ResourceKey=PlusButton}"  />

                </StackPanel>

                <StackPanel Name="PlayerSixButtons" Grid.Row="7" Orientation="Horizontal" Visibility="Collapsed">
                    <Button Name="MinusPlayerSixButton" Tapped="MinusPlayerSix"  Style="{StaticResource ResourceKey=MinusButton}" />

                </StackPanel>

            </Grid>

这是后面的 C# 代码

private void AddPlayerThree(object sender, TappedRoutedEventArgs e)
    {
        PlayerThreeName.Visibility = Visibility.Visible;
        PlayerThreeTag.Visibility = Visibility.Visible;
        PlayerTwoButtons.Visibility = Visibility.Collapsed;
        PlayerThreeButtons.Visibility = Visibility.Visible;
    }

    private void AddPlayerFour(object sender, TappedRoutedEventArgs e)
    {
        PlayerFourName.Visibility = Visibility.Visible;
        PlayerFourTag.Visibility = Visibility.Visible;
        PlayerThreeButtons.Visibility = Visibility.Collapsed;
        PlayerFourButtons.Visibility = Visibility.Visible;
    }

    private void AddPlayerFive(object sender, TappedRoutedEventArgs e)
    {
        PlayerFiveName.Visibility = Visibility.Visible;
        PlayerFiveTag.Visibility = Visibility.Visible;
        PlayerFourButtons.Visibility = Visibility.Collapsed;
        PlayerFiveButtons.Visibility = Visibility.Visible;
    }

    private void AddPlayerSix(object sender, TappedRoutedEventArgs e)
    {
        PlayerSixName.Visibility = Visibility.Visible;
        PlayerSixTag.Visibility = Visibility.Visible;
        AddPlayerSixButton.Visibility = Visibility.Collapsed;
        MinusPlayerSixButton.Visibility = Visibility.Visible;
    }

    private void MinusPlayerThree(object sender, TappedRoutedEventArgs e)
    {
        PlayerThreeName.Visibility = Visibility.Collapsed;
        PlayerThreeTag.Visibility = Visibility.Collapsed;
        PlayerThreeButtons.Visibility = Visibility.Collapsed;
        PlayerTwoButtons.Visibility = Visibility.Visible;     

    }

    private void MinusPlayerFour(object sender, TappedRoutedEventArgs e)
    {
        PlayerFourName.Visibility = Visibility.Collapsed;
        PlayerFourTag.Visibility = Visibility.Collapsed;
        PlayerFourButtons.Visibility = Visibility.Collapsed;
        PlayerThreeButtons.Visibility = Visibility.Visible;

    }

    private void MinusPlayerFive(object sender, TappedRoutedEventArgs e)
    {
        PlayerFiveName.Visibility = Visibility.Collapsed;
        PlayerFiveTag.Visibility = Visibility.Collapsed;
        PlayerFiveButtons.Visibility = Visibility.Collapsed;
        PlayerFourButtons.Visibility = Visibility.Visible;


    }

    private void MinusPlayerSix(object sender, TappedRoutedEventArgs e)
    {
        PlayerSixTag.Visibility = Visibility.Collapsed;
        PlayerSixName.Visibility = Visibility.Collapsed;
        PlayerSixButtons.Visibility = Visibility.Collapsed;
        PlayerFiveButtons.Visibility = Visibility.Visible;
    }

有关如何解决此问题的任何想法,我将不胜感激!

【问题讨论】:

    标签: c# xaml grid uwp


    【解决方案1】:

    当您添加播放器 6 时,您所做的事情与其他按钮的点击不同(我比较了不同的按钮点击/点击,然后发现了问题)。在AddPlayerSix 中,您直接在按钮上工作,而不是在 StackPanel 上工作。下面的代码有效:

    private void AddPlayerSix(object sender, TappedRoutedEventArgs e)
         {
            PlayerSixName.Visibility = Visibility.Visible;
            PlayerSixTag.Visibility = Visibility.Visible;
    
            // Your code (not working)
            //AddPlayerSixButton.Visibility = Visibility.Collapsed;
            //MinusPlayerSixButton.Visibility = Visibility.Visible;
    
            // New code (works)
            PlayerFiveButtons.Visibility = Visibility.Collapsed;
            PlayerSixButtons.Visibility = Visibility.Visible;
        }
    

    【讨论】:

    • 啊谢谢!!我知道这将是一件非常愚蠢的事情。我很感激!
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多