Visibility = "Collapsed" Не работает, есть необходимость в чем-то дополнительном или нет - PullRequest
1 голос
/ 10 июня 2010

Я хочу изменить положение моего TextBox, когда верхнее текстовое поле должно быть невидимым, как я могу этого достичь?Я использую wpf c #.

Я использую Visibility="Collapsed", но это занимает место.

Ответы [ 3 ]

2 голосов
/ 10 июня 2010

Вот пример, который показывает, что я имею в виду в своем последнем комментарии, основываясь на подсказках из вашего вопроса и комментария.Он показывает, как Visible, Hidden и Collapsed работают в StackPanel, в сетке с фиксированной высотой строки и в сетке с автоматической высотой строки.

Это довольно простой материал, но, надеюсь, он поможет вам,и любые будущие поиски Google.

<Window x:Class="CollapsedExample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Collapsed Example" SizeToContent="WidthAndHeight">

    <Window.Resources>
        <Style x:Key="rectBase" TargetType="{x:Type Rectangle}">
            <Setter Property="Width" Value="100" />
            <Setter Property="Height" Value="50" />
            <Setter Property="Margin" Value="5" />
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="VerticalAlignment" Value="Center" />

        </Style>

        <Style x:Key="rectCollapsing" 
               BasedOn="{StaticResource rectBase}"
               TargetType="{x:Type Rectangle}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=radioVisible, 
                                               Path=IsChecked}" 
                             Value="True">
                    <Setter Property="Visibility" Value="Visible" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=radioHidden, 
                                               Path=IsChecked}" 
                             Value="True">
                    <Setter Property="Visibility" Value="Hidden" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=radioCollapsed, 
                                               Path=IsChecked}" 
                             Value="True">
                    <Setter Property="Visibility" Value="Collapsed" />
                </DataTrigger>
            </Style.Triggers>
        </Style>

        <Style x:Key="labelStyle"
               TargetType="{x:Type Label}">
            <Setter Property="FontWeight" Value="Bold" />
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="VerticalAlignment" Value="Center" />
        </Style>
    </Window.Resources>

    <Grid x:Name="gridLayout" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>


        <!-- Stack Panel -->
        <Label Grid.Column="0" 
               Grid.Row="0"
               Style="{StaticResource labelStyle}"
               Content="Stack Panel" />
        <StackPanel x:Name="stackExample"
                    Grid.Column="0"
                    Grid.Row="1">
            <Rectangle Style="{StaticResource rectBase}"
                       Fill="Blue" />
            <Rectangle Style="{StaticResource rectCollapsing}"
                       Fill="Red" />
            <Rectangle Style="{StaticResource rectBase}"
                       Fill="Green" />
        </StackPanel>

        <!-- Grid with Fixed Sizes -->
        <Rectangle x:Name="rectShading" 
                   Grid.Column="1" Grid.Row="0" Grid.RowSpan="2"
                   Fill="LightGray" />

        <Label Grid.Column="1" 
               Grid.Row="0"
               Style="{StaticResource labelStyle}"
               Content="Grid (Fixed Row Size)" />
        <Grid x:Name="gridFixedRowsExample"
                    Grid.Column="1"
                    Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="60" />
                <RowDefinition Height="60" />
                <RowDefinition Height="60" />
            </Grid.RowDefinitions>
            <Rectangle Style="{StaticResource rectBase}"
                       Grid.Row="0"
                       Fill="Blue" />
            <Rectangle Style="{StaticResource rectCollapsing}"
                       Grid.Row="1"
                       Fill="Red" />
            <Rectangle Style="{StaticResource rectBase}"
                       Grid.Row="2"
                       Fill="Green" />
        </Grid>


        <!-- Grid with Auto Sizes -->
        <Label Grid.Column="2" 
               Grid.Row="0"
               Style="{StaticResource labelStyle}"
               Content="Grid (Auto Row Size)" />
        <Grid x:Name="gridAutoRowsExample"
                    Grid.Column="2"
                    Grid.Row="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Rectangle Style="{StaticResource rectBase}"
                       Grid.Row="0"
                       Fill="Blue" />
            <Rectangle Style="{StaticResource rectCollapsing}"
                       Grid.Row="1"
                       Fill="Red" />
            <Rectangle Style="{StaticResource rectBase}"
                       Grid.Row="2"
                       Fill="Green" />
        </Grid>


        <!-- Options -->
        <StackPanel x:Name="stackOptions"
                    Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3">
            <RadioButton x:Name="radioVisibile"
                         IsChecked="True"
                         Margin="5"
                         Content="Red Rectangle is Visible" />
            <RadioButton x:Name="radioHidden"
                         Margin="5"
                         Content="Red Rectangle is Hidden" />
            <RadioButton x:Name="radioCollapsed"
                         Margin="5"
                         Content="Red Rectangle is Collapsed" />
        </StackPanel>

    </Grid>
</Window>
0 голосов
/ 20 мая 2014

Если я правильно вас понимаю, вы пытаетесь установить значение Visibility компонента GUI в значение String.То, что вам нужно сделать, это установить для нее предопределенную константу в System.Windows.Visibility.

Допустим, вы работаете с текстовым полем myTextBox в коде, например.То, что вам нужно сделать, это установить:

myTextBox.Visibility = System.Windows.Visibility.Collapsed;

Если вы попытаетесь установить для него строку «Collapsed», она не будет знать, что делать со значением.

0 голосов
/ 10 июня 2010

Попробуйте настроить Visibility="Collapsed" на TextBox ....

Перечень видимости MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...