когда CheckBox переходит в непроверенное состояние, срабатывает событие Unchecked
(симметрично до Checked
). Добавьте обработчик событий для них обоих.
<CheckBox x:Name="chbon"
Content="On"
HorizontalAlignment="Left"
Margin="175,84,0,0"
VerticalAlignment="Top"
Checked="chbon_Checked_1"
Unhecked="chbon_Checked_1"/>
private void chbon_Checked_1(object sender, RoutedEventArgs e)
{
txtshow.Visibility = cchbon.IsChecked ? Visibility.Visible : Visibility.Hidden;
}
Обычно используется привязка к логическому свойству для установки видимости некоторого элемента. В .NET есть BooleanToVisibilityConverter
, который возвращает Visible
для true
и Collapsed
для false
. Collapsed
отличается от Hidden
: Hidden
элемент stil утверждает пространство на экране, как если бы он был видимым.
Существует способ добиться всего в XAML с помощью триггера:
<CheckBox x:Name="chbon" Content="On"
HorizontalAlignment="Left" Margin="175,84,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtshow"
HorizontalAlignment="Left" VerticalAlignment="Top"
Height="23" Width="29" Margin="272,82,0,0" TextWrapping="Wrap">
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=chbon}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
<TextBox/>